From 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa Mon Sep 17 00:00:00 2001 From: Charles Date: Thu, 9 Jan 2020 10:55:03 +0100 Subject: phpmyadmin working --- .../williamdes/mariadb-mysql-kbs/test/DataTest.php | 74 ++ .../mariadb-mysql-kbs/test/RefProvider.php | 50 + .../mariadb-mysql-kbs/test/SearchTest.php | 178 +++ .../mariadb-mysql-kbs/test/SlimDataTest.php | 59 + .../williamdes/mariadb-mysql-kbs/test/cleaner.js | 193 ++++ .../test/data/mysql_test_case_1.html | 235 ++++ .../test/data/mysql_test_case_2.html | 1211 ++++++++++++++++++++ .../test/data/mysql_test_case_3.html | 339 ++++++ .../test/data/ultraSlimDataTestWithVariables.json | 51 + .../williamdes/mariadb-mysql-kbs/test/index.js | 12 + .../williamdes/mariadb-mysql-kbs/test/parser.js | 129 +++ .../williamdes/mariadb-mysql-kbs/test/phpunit.xml | 27 + .../williamdes/mariadb-mysql-kbs/test/templates.js | 218 ++++ 13 files changed, 2776 insertions(+) create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/DataTest.php create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/RefProvider.php create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/SearchTest.php create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/SlimDataTest.php create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/cleaner.js create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_1.html create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_2.html create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_3.html create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/ultraSlimDataTestWithVariables.json create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/index.js create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/parser.js create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/phpunit.xml create mode 100644 srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/templates.js (limited to 'srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test') diff --git a/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/DataTest.php b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/DataTest.php new file mode 100644 index 0000000..c12f576 --- /dev/null +++ b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/DataTest.php @@ -0,0 +1,74 @@ +setRemoteRefProvider(new RefProvider()); + $schema = Schema::import($id, $options); + $schema->in($contents); + return true;// No exception occured + } + + /** + * test files + * + * @return void + */ + public function testFileSample(): void + { + $slimDataTestData = json_decode((string) file_get_contents(__DIR__."/data/ultraSlimDataTestWithVariables.json")); + $this->assertTrue(self::validate($slimDataTestData, "urn:williamdes:mariadb-mysql-kbs:ultraslimdata")); + } + + /** + * test slim data + * + * @return void + */ + public function testFileSlim(): void + { + $slimData = json_decode((string) file_get_contents(__DIR__."/../dist/merged-slim.json")); + $this->assertTrue(self::validate($slimData, "urn:williamdes:mariadb-mysql-kbs:slimdata")); + } + + /** + * test ultra slim data + * + * @return void + */ + public function testFileUltraSlim(): void + { + $slimData = json_decode((string) file_get_contents(__DIR__."/../dist/merged-ultraslim.json")); + $this->assertTrue(self::validate($slimData, "urn:williamdes:mariadb-mysql-kbs:ultraslimdata")); + } + + /** + * test ultra slim data + * + * @return void + */ + public function testFileRaw(): void + { + $slimData = json_decode((string) file_get_contents(__DIR__."/../dist/merged-raw.json")); + $this->assertTrue(self::validate($slimData, "urn:williamdes:mariadb-mysql-kbs:rawdata")); + } + +} diff --git a/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/RefProvider.php b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/RefProvider.php new file mode 100644 index 0000000..50b25cc --- /dev/null +++ b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/RefProvider.php @@ -0,0 +1,50 @@ +{'$id'}) && $schema !== null) { + $this->urnSchemas[$schema->{'$id'}] = $schema; + } + } + } + } + + /** + * @param string $url The file url + * @return \stdClass|false json_decode of $url resource content + */ + public function getSchemaData($url) + { + if (isset($this->urnSchemas[$url])) {// Handle urn: urls + return $this->urnSchemas[$url]; + } elseif (is_file($url)) {// Handle file + return json_decode((string) file_get_contents($url)); + } else {// Handle URL + return json_decode((string) file_get_contents(rawurldecode($url))); + } + } + +} diff --git a/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/SearchTest.php b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/SearchTest.php new file mode 100644 index 0000000..cc15ac9 --- /dev/null +++ b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/SearchTest.php @@ -0,0 +1,178 @@ +addVariable("variable-1", "boolean", true); + $sd->addVariable("variable-2", null, null); + $sd->addVariable("variable-3", null, true); + $variable4 = $sd->addVariable("variable-4", null, false); + $variable4->addDocumentation("https://mariadb.com/testurl/for/variable/4", "myanchor"); + $variable4->addDocumentation("https://dev.mysql.com/testurl_for-variable/4", "my_anchor"); + Search::loadTestData($sd); + } + + /** + * test get by name + * + * @return void + */ + public function testGetByName(): void + { + $found = Search::getByName("variable-4"); + $this->assertEquals("https://mariadb.com/testurl/for/variable/4#myanchor", $found); + } + + /** + * test get by name for MySQL + * + * @return void + */ + public function testGetByNameMYSQL(): void + { + $found = Search::getByName("variable-4", Search::MYSQL); + $this->assertEquals("https://dev.mysql.com/testurl_for-variable/4#my_anchor", $found); + } + + /** + * test get by name for MARIADB + * + * @return void + */ + public function testGetByNameMARIADB(): void + { + $found = Search::getByName("variable-4", Search::MARIADB); + $this->assertEquals("https://mariadb.com/testurl/for/variable/4#myanchor", $found); + } + + /** + * test get by name + * + * + * @return void + */ + public function testException(): void + { + $this->expectException(KBException::class); + $this->expectExceptionCode(0); + $this->expectExceptionMessageRegExp('/(.+) does not exist for this type of documentation !/'); + Search::getByName("variable-3", Search::MARIADB); + } + + /** + * test get by name not found variable + * + * + * @return void + */ + public function testExceptionNoFoundGetVariableType(): void + { + $this->expectException(KBException::class); + $this->expectExceptionCode(0); + $this->expectExceptionMessageRegExp('/(.+) does not exist !/'); + Search::getVariableType("acbdefghi0202"); + } + + /** + * test get by name not found variable + * + * + * @return void + */ + public function testExceptionNoFound(): void + { + $this->expectException(KBException::class); + $this->expectExceptionCode(0); + $this->expectExceptionMessageRegExp('/(.+) does not exist !/'); + Search::getByName("acbdefghi0202", Search::MARIADB); + } + + /** + * test get by name not found variable + * + * + * @return void + */ + public function testExceptionNoFoundGetVariable(): void + { + $this->expectException(KBException::class); + $this->expectExceptionCode(0); + $this->expectExceptionMessageRegExp('/(.+) does not exist !/'); + Search::getVariable("acbdefghi0202"); + } + + /** + * test load data fail + * + * @runInSeparateProcess + * + * @return void + */ + public function testExceptionLoadData(): void + { + $this->expectException(KBException::class); + $this->expectExceptionCode(0); + $this->expectExceptionMessageRegExp('/(.+) does not exist !/'); + Search::$DATA_DIR = "."; + Search::$loaded = false; + Search::loadData(); + } + + /** + * test get variables with dynamic status + * + * @return void + */ + public function testGetVariablesWithDynamic(): void + { + $dynamic = Search::getVariablesWithDynamic(true); + $this->assertEquals($dynamic, Search::getDynamicVariables()); + $static = Search::getVariablesWithDynamic(false); + $this->assertEquals($static, Search::getStaticVariables()); + $this->assertEquals(2, count($dynamic)); + $this->assertEquals(1, count($static)); + $common = \array_intersect($dynamic, $static); + $this->assertEquals(0, count($common));// Impossible to be dynamic and not + } + + /** + * test Exception get variable type has no type + * + * + * @return void + */ + public function testExceptionGetVariableType(): void + { + $this->expectException(KBException::class); + $this->expectExceptionCode(0); + $this->expectExceptionMessageRegExp('/(.+) does have a known type !/'); + Search::getVariableType("variable-2"); + } + + /** + * test get variable type + * + * @return void + */ + public function testGetVariableType(): void + { + $type = Search::getVariableType("variable-1"); + $this->assertEquals("boolean", $type); + } + +} diff --git a/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/SlimDataTest.php b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/SlimDataTest.php new file mode 100644 index 0000000..30a1d18 --- /dev/null +++ b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/SlimDataTest.php @@ -0,0 +1,59 @@ +assertInstanceOf(SlimData::class, $slimData); + return $slimData; + } + + /** + * Test json_encode empty object + * + * @param SlimData $slimData SlimData instance + * @depends testCreateInstance + * @return void + */ + public function testToJsonEmpty(SlimData $slimData): void + { + $this->assertEquals('{"version":1}', json_encode($slimData)); + } + + /** + * Test json_encode with variables + * + * @param SlimData $slimData SlimData instance + * @depends testCreateInstance + * @return void + */ + public function testToJsonWithVariables(SlimData $slimData): void + { + $slimData->addVariable("Test_var", "boolean", true); + $slimData->addVariable("another-variable", "string", false); + $kbe = $slimData->addVariable("doc-variable_ok", "integer", true); + $kbe->addDocumentation("https://example.org/williamdes/mariadb-mysql-kbs", "a_doc-variable_ok"); + $kbe->addDocumentation("https://example.org/williamdes/mariadb-mysql-kbs", "a_href_ok"); + $kbe->addDocumentation("https://example.org/williamdes/mariadb-mysql-kbs/_doc-variable_ok"); + $kbe->addDocumentation("https://dev.mysql.com/"); + $kbe->addDocumentation("https://mariadb.com/"); + $kbe->addDocumentation("https://mariadb.com/", "anchorname"); + $this->assertEquals( + file_get_contents(__DIR__."/data/ultraSlimDataTestWithVariables.json"), + json_encode($slimData, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) + ); + } + +} diff --git a/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/cleaner.js b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/cleaner.js new file mode 100644 index 0000000..007207e --- /dev/null +++ b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/cleaner.js @@ -0,0 +1,193 @@ +'use strict'; + +const expect = require('chai').expect; +const cleaner = require(__dirname + '/../src/cleaner'); + +module.exports = function() { + suite('cleaner', function() { + test('clean cli html code', function(done) { + const cli = cleaner.cleanCli('--test-argument'); + expect(cli).to.equal('--test-argument'); + done(); + }); + test('clean cli html code not closed', function(done) { + const cli = cleaner.cleanCli('--test-argument'); + expect(cli).to.equal('--test-argument'); + done(); + }); + test('clean cli nothing to clean', function(done) { + const cli = cleaner.cleanCli('--test-argument'); + expect(cli).to.equal('--test-argument'); + done(); + }); + test('clean cli undefined', function(done) { + const cli = cleaner.cleanCli(undefined); + expect(cli).to.equal(undefined); + done(); + }); + test('clean range undefined', function(done) { + const range = cleaner.cleanRange(undefined); + expect(range).to.deep.equal(undefined); + done(); + }); + test('clean range.from typeof object (dataset-1)', function(done) { + const range = cleaner.cleanRange({ + from: null, + to: null, + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.from typeof object (dataset-2)', function(done) { + const range = cleaner.cleanRange({ + to: null, + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.from typeof object (dataset-3)', function(done) { + const range = cleaner.cleanRange({ + from: null, + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.from typeof object (dataset-4)', function(done) { + const range = cleaner.cleanRange({ + from: undefined, + to: undefined, + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.from typeof object (dataset-5)', function(done) { + const range = cleaner.cleanRange({ + to: undefined, + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.from typeof object (dataset-6)', function(done) { + const range = cleaner.cleanRange({ + from: undefined, + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.from typeof object (dataset-7)', function(done) { + const range = cleaner.cleanRange({ + from: NaN, + to: NaN, + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.from typeof int', function(done) { + const range = cleaner.cleanRange({ + from: 1024, + }); + expect(range).to.deep.equal({ + from: 1024, + }); + done(); + }); + test('clean range.from typeof string', function(done) { + const range = cleaner.cleanRange({ + from: '1024', + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.to typeof int', function(done) { + const range = cleaner.cleanRange({ + to: 1024, + }); + expect(range).to.deep.equal({ + to: 1024, + }); + done(); + }); + test('clean range.to typeof string', function(done) { + const range = cleaner.cleanRange({ + to: '1024', + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range.to typeof object', function(done) { + const range = cleaner.cleanRange({ + to: {}, + }); + expect(range).to.deep.equal({}); + done(); + }); + test('clean range to upwards', function(done) { + const range = cleaner.cleanRange({ + to: 'upwards', + }); + expect(range).to.deep.equal({ + to: 'upwards', + }); + done(); + }); + test('clean range to upwards match', function(done) { + const range = cleaner.cleanRange({ + to: '(128KB) upwards', + }); + expect(range).to.deep.equal({ + to: 'upwards', + }); + done(); + }); + test('clean binary types in bytes', function(done) { + const type = cleaner.cleanType('in bytes'); + expect(type).to.deep.equal('byte'); + done(); + }); + test('clean binary types size in mb', function(done) { + const type = cleaner.cleanType('size in mb'); + expect(type).to.deep.equal('byte'); + done(); + }); + test('clean binary types number of bytes', function(done) { + const type = cleaner.cleanType('number of bytes'); + expect(type).to.deep.equal('byte'); + done(); + }); + test('clean binary types number of', function(done) { + const type = cleaner.cleanType('number of'); + expect(type).to.deep.equal('integer'); + done(); + }); + test('clean binary types size of', function(done) { + const type = cleaner.cleanType('size of'); + expect(type).to.deep.equal('integer'); + done(); + }); + test('clean binary types in microseconds', function(done) { + const type = cleaner.cleanType('in microseconds'); + expect(type).to.deep.equal('integer'); + done(); + }); + test('clean binary types in seconds', function(done) { + const type = cleaner.cleanType('in seconds'); + expect(type).to.deep.equal('integer'); + done(); + }); + test('clean wtf type', function(done) { + const type = cleaner.cleanType('wtf'); + expect(type).to.deep.equal(undefined); + done(); + }); + test('clean enumeration type', function(done) { + const type = cleaner.cleanType('enumeration'); + expect(type).to.deep.equal('enumeration'); + done(); + }); + test('clean undefined type', function(done) { + const type = cleaner.cleanType(undefined); + expect(type).to.deep.equal(undefined); + done(); + }); + }); +}; diff --git a/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_1.html b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_1.html new file mode 100644 index 0000000..5855c10 --- /dev/null +++ b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_1.html @@ -0,0 +1,235 @@ + + +
+
    +
  • +

    + + + + + --ndbcluster +

    +
    + +

    Table 21.207 + Type and value information for ndbcluster

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    Namendbcluster +
    Command LineYes
    System VariableNo
    Status VariableNo
    Option FileYes
    Scope
    DynamicNo
    Type
    Default, RangeFALSE (Version: NDB 7.5-7.6)
    Notes +

    + DESCRIPTION: Enable NDB Cluster (if this version + of MySQL supports it) +

    +

    + Disabled by + --skip-ndbcluster. +

    +
    +
    +
    + + + + + + + +
    PropertyValue
    +
    + +
    +
    +

    + The NDBCLUSTER storage engine + is necessary for using NDB Cluster. If a + mysqld binary includes support for the + NDBCLUSTER storage engine, + the engine is disabled by default. Use the + --ndbcluster option to + enable it. Use --skip-ndbcluster to + explicitly disable the engine. +

    +

    + It is not necessary or desirable to use this option + together with --initialize. + Beginning with NDB 7.5.4, --ndbcluster is + ignored (and the NDB storage engine is + not enabled) if + --initialize is also used. (Bug #81689, + Bug #23518923) +

    +
  • +
  • +

    + + + + + --ndb-allow-copying-alter-table=[ON|OFF] +

    +
    + +

    Table 21.208 + Type and value information for ndb-allow-copying-alter-table

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PropertyValue
    Namendb-allow-copying-alter-table +
    Command LineYes
    System VariableYes
    Status VariableNo
    Option FileYes
    ScopeBoth
    DynamicYes
    Type
    Default, RangeON (Version: NDB 7.5-7.6)
    Notes +

    + DESCRIPTION: Set to OFF to keep ALTER TABLE from + using copying operations on NDB tables +

    +
    +
    +
    + + + + + + + +
    PropertyValue
    +
    + +
    +
    +

    + Let ALTER TABLE and other + DDL statements use copying operations on + NDB tables. Set to + OFF to keep this from happening; doing + so may improve performance of critical applications. +

    +
  • +
  • +

    + + + + + --ndb-batch-size=# +

    + + diff --git a/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_2.html b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_2.html new file mode 100644 index 0000000..2c3c1c5 --- /dev/null +++ b/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/test/data/mysql_test_case_2.html @@ -0,0 +1,1211 @@ + +
    +
      +
    • +

      + + + + + binlog_gtid_simple_recovery +

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      PropertyValue
      Command-Line Format--binlog-gtid-simple-recovery[={OFF|ON}]
      System Variablebinlog_gtid_simple_recovery +
      ScopeGlobal
      DynamicNo
      SET_VAR Hint AppliesNo
      TypeBoolean
      Default ValueON
      +
      +

      + This variable controls how binary log files are iterated + during the search for GTIDs when MySQL starts or restarts. +

      +

      + When + binlog_gtid_simple_recovery=TRUE, + which is the default in MySQL 8.0, the values of + gtid_executed and + gtid_purged are computed at + startup based on the values of + Previous_gtids_log_event in the most recent + and oldest binary log files. For a description of the + computation, see + The gtid_purged System + Variable. This setting + accesses only two binary log files during server restart. If + all binary logs on the server were generated using MySQL 5.7.8 + or later, + binlog_gtid_simple_recovery=TRUE + can always safely be used. + + +

      +

      + If any binary logs from MySQL 5.7.7 or older are present on + the server (for example, following an upgrade of an older + server to MySQL 8.0), with + binlog_gtid_simple_recovery=TRUE, + gtid_executed and + gtid_purged might be + initialized incorrectly in the following two situations: +

      +
      +
        +
      • +

        + The newest binary log was generated by MySQL 5.7.5 or + earlier, and gtid_mode + was ON for some binary logs but + OFF for the newest binary log. +

        +
      • +
      • +

        + A SET @@GLOBAL.gtid_purged statement + was issued on MySQL 5.7.7 or earlier, and the binary log + that was active at the time of the SET + @@GLOBAL.gtid_purged statement has not yet been + purged. + + +

        +
      • +
      +
      +

      + If an incorrect GTID set is computed in either situation, it + will remain incorrect even if the server is later restarted + with + binlog_gtid_simple_recovery=FALSE. + If either of these situations apply or might apply on the + server, set + binlog_gtid_simple_recovery=FALSE + before starting or restarting the server. +

      +

      + When + binlog_gtid_simple_recovery=FALSE + is set, the method of computing + gtid_executed and + gtid_purged as described in + The gtid_purged System + Variable is changed to + iterate the binary log files as follows: +

      +
      +
        +
      • +

        + Instead of using the value of + Previous_gtids_log_event and GTID log + events from the newest binary log file, the computation + for gtid_executed + iterates from the newest binary log file, and uses the + value of Previous_gtids_log_event and + any GTID log events from the first binary log file where + it finds a Previous_gtids_log_event + value. If the server's most recent binary log files do not + have GTID log events, for example if + gtid_mode=ON was used but + the server was later changed to + gtid_mode=OFF, this + process can take a long time. +

        +
      • +
      • +

        + Instead of using the value of + Previous_gtids_log_event from the + oldest binary log file, the computation for + gtid_purged iterates from + the oldest binary log file, and uses the value of + Previous_gtids_log_event from the first + binary log file where it finds either a nonempty + Previous_gtids_log_event value, or at + least one GTID log event (indicating that the use of GTIDs + starts at that point). If the server's older binary log + files do not have GTID log events, for example if + gtid_mode=ON was only set + recently on the server, this process can take a long time. +

        +
      • +
      +
      +
    • +
    • +

      + enforce_gtid_consistency +

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      PropertyValue
      Command-Line Format--enforce-gtid-consistency[=value]
      System Variableenforce_gtid_consistency +
      ScopeGlobal
      DynamicYes
      SET_VAR Hint AppliesNo
      TypeEnumeration
      Default ValueOFF
      Valid Values +

      OFF

      +

      ON

      +

      WARN

      +
      +
      +

      + Depending on the value of this variable, the server enforces + GTID consistency by allowing execution of only statements that + can be safely logged using a GTID. You + must set this variable to + ON before enabling GTID based replication. +

      +

      + The values that + enforce_gtid_consistency can + be configured to are: +

      +
      +
        +
      • +

        + OFF: all transactions are allowed to + violate GTID consistency. +

        +
      • +
      • +

        + ON: no transaction is allowed to + violate GTID consistency. +

        +
      • +
      • +

        + WARN: all transactions are allowed to + violate GTID consistency, but a warning is generated in + this case. +

        +
      • +
      +
      +

      + Only statements that can be logged using GTID safe statements + can be logged when + enforce_gtid_consistency is + set to ON, so the operations listed here + cannot be used with this option: +

      +
      +
        +
      • +

        + CREATE + TABLE ... SELECT statements +

        +
      • +
      • +

        + CREATE + TEMPORARY TABLE or + DROP TEMPORARY + TABLE statements inside transactions +

        +
      • +
      • +

        + Transactions or statements that update both transactional + and nontransactional tables. There is an exception that + nontransactional DML is allowed in the same transaction or + in the same statement as transactional DML, if all + nontransactional tables are + temporary. +

        +
      • +
      +
      +

      + --enforce-gtid-consistency only + takes effect if binary logging takes place for a statement. If + binary logging is disabled on the server, or if statements are + not written to the binary log because they are removed by a + filter, GTID consistency is not checked or enforced for the + statements that are not logged. +

      +

      + For more information, see + Section 17.1.3.6, “Restrictions on + Replication with GTIDs”. +

      +

      + Prior to MySQL 5.7 and in early releases in that release + series, the boolean + enforce_gtid_consistency + defaulted to OFF. To maintain compatibility + with these earlier releases, the enumeration defaults to + OFF, and setting + --enforce-gtid-consistency + without a value is interpreted as setting the value to + ON. The variable also has multiple textual + aliases for the values: 0=OFF=FALSE, + 1=ON=TRUE,2=WARN. This + differs from other enumeration types but maintains + compatibility with the boolean type used in previous releases. + These changes impact on what is returned by the variable. + Using SELECT @@ENFORCE_GTID_CONSISTENCY, + SHOW VARIABLES LIKE + 'ENFORCE_GTID_CONSISTENCY', and SELECT * + FROM INFORMATION_SCHEMA.VARIABLES WHERE 'VARIABLE_NAME' = + 'ENFORCE_GTID_CONSISTENCY', all return the textual + form, not the numeric form. This is an incompatible change, + since @@ENFORCE_GTID_CONSISTENCY returns + the numeric form for booleans but returns the textual form for + SHOW and the Information Schema. +

      +
    • +
    • +

      + + + + + gtid_executed +

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      PropertyValue
      System Variablegtid_executed +
      System Variablegtid_executed +
      ScopeGlobal
      ScopeGlobal, Session
      DynamicNo
      DynamicNo
      SET_VAR Hint AppliesNo
      SET_VAR Hint AppliesNo
      TypeString
      +
      +

      + When used with global scope, this variable contains a + representation of the set of all transactions executed on the + server and GTIDs that have been set by a + SET + gtid_purged statement. This + is the same as the value of the + Executed_Gtid_Set column in the output of + SHOW MASTER STATUS and + SHOW SLAVE STATUS. The value of + this variable is a GTID set, see + GTID Sets for + more information. +

      +

      + When the server starts, + @@GLOBAL.gtid_executed is initialized. See + binlog_gtid_simple_recovery + for more information on how binary logs are iterated to + populate gtid_executed. GTIDs + are then added to the set as transactions are executed, or if + any + SET + gtid_purged statement is + executed. +

      +

      + The set of transactions that can be found in the binary logs + at any given time is equal to + GTID_SUBTRACT(@@GLOBAL.gtid_executed, + @@GLOBAL.gtid_purged); that is, to all transactions + in the binary log that have not yet been purged. +

      +

      + Issuing RESET MASTER causes the + global value (but not the session value) of this variable to + be reset to an empty string. GTIDs are not otherwise removed + from this set other than when the set is cleared due to + RESET MASTER. +

      +

      + In some older releases, this variable could also be used with + session scope, where it contained a representation of the set + of transactions that are written to the cache in the current + session. The session scope is now deprecated. +

      +
    • +
    • +

      + gtid_executed_compression_period +

      +
      + + + + + + + + + + + + + +
      PropertyValue