1. 24 Nov, 2017 2 commits
  2. 23 Nov, 2017 5 commits
  3. 22 Nov, 2017 4 commits
  4. 21 Nov, 2017 7 commits
  5. 20 Nov, 2017 4 commits
  6. 19 Nov, 2017 1 commit
  7. 18 Nov, 2017 1 commit
  8. 17 Nov, 2017 3 commits
  9. 16 Nov, 2017 7 commits
    • Vladislav Vaintroub's avatar
      Fix rocksdb tests on Windows · 0d1e805a
      Vladislav Vaintroub authored
      0d1e805a
    • Vladislav Vaintroub's avatar
      MDEV-13852 - redefine WinWriteableFile such as IsSyncThreadSafe() · 689168be
      Vladislav Vaintroub authored
      is set to true, as it should.
      
      Copy and modify original io_win.h header file to a different location
      (as we cannot patch anything in submodule). Make sure modified header is
      used.
      689168be
    • Alexey Botchkov's avatar
      MDEV-14402 JSON_VALUE doesn't escape quote. · 842dce37
      Alexey Botchkov authored
              Result unescaping added.
      842dce37
    • Jan Lindström's avatar
      MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX · d7349e20
      Jan Lindström authored
      MariaDB adjustments to test case innodb-replace-debug and
      add missing instrumentation to row0ins.cc.
      
      MariaDB 10.1 does not seem to be affected.
      d7349e20
    • Jan Lindström's avatar
      MDEV-9663: InnoDB assertion failure: *cursor->index->name == TEMP_INDEX_PREFIX · eeec64d7
      Jan Lindström authored
      Imported missing test case from MySQL 5.7 for
      
      commit 25781c154396dbbc21023786aa3be070057d6999
      Author: Annamalai Gurusami <annamalai.gurusami@oracle.com>
      Date:   Mon Feb 24 14:00:03 2014 +0530
      
          Bug #17604730 ASSERTION: *CURSOR->INDEX->NAME == TEMP_INDEX_PREFIX
      eeec64d7
    • Jan Lindström's avatar
      MDEV-13206: INSERT ON DUPLICATE KEY UPDATE foreign key fail · 0c4d11e8
      Jan Lindström authored
      This is caused by following change:
      
      commit 95d29c99f01882ffcc2259f62b3163f9b0e80c75
      Author: Marko Mäkelä <marko.makela@oracle.com>
      Date:   Tue Nov 27 11:12:13 2012 +0200
      
          Bug#15920445 INNODB REPORTS ER_DUP_KEY BEFORE CREATE UNIQUE INDEX COMPLETED
      
          There is a phase during online secondary index creation where the index has
          been internally completed inside InnoDB, but does not 'officially' exist yet.
          We used to report ER_DUP_KEY in these situations, like this:
      
          ERROR 23000: Can't write; duplicate key in table 't1'
      
          What we should do is to let the 'offending' operation complete, but report an
          error to the
          ALTER TABLE t1 ADD UNIQUE KEY (c2):
      
          ERROR HY000: Index c2 is corrupted
          (This misleading error message should be fixed separately:
          Bug#15920713 CREATE UNIQUE INDEX REPORTS ER_INDEX_CORRUPT INSTEAD OF DUPLICATE)
      
          row_ins_sec_index_entry_low(): flag the index corrupted instead of
          reporting a duplicate, in case the index has not been published yet.
      
          rb:1614 approved by Jimmy Yang
      
      Problem is that after we have found duplicate key on primary key
      we continue to get necessary gap locks in secondary indexes to
      block concurrent transactions from inserting the searched records.
      However, search from unique index used in foreign key constraint
      could return DB_NO_REFERENCED_ROW if INSERT .. ON DUPLICATE KEY UPDATE
      does not contain value for foreign key column. In this case
      we should return the original DB_DUPLICATE_KEY error instead
      of DB_NO_REFERENCED_ROW.
      
      Consider as a example following:
      
      create table child(a int not null primary key,
      b int not null,
      c int,
      unique key (b),
      foreign key (b) references
      parent (id)) engine=innodb;
      
      insert into child values (1,1,2);
      
      insert into child(a) values (1) on duplicate key update c = 3;
      
      Now primary key value 1 naturally causes duplicate key error that will be
      stored on node->duplicate. If there was no duplicate key error, we should
      return the actual no referenced row error. As value for column b used in
      both unique key and foreign key is not provided, server uses 0 as a
      search value. This is naturally, not found leading to DB_NO_REFERENCED_ROW.
      But, we should update the row with primay key value 1 anyway as
      requested by on duplicate key update clause.
      0c4d11e8
    • Jun Su's avatar
      Support CRC32 SSE2 implementation under Windows · 2401d14e
      Jun Su authored
      2401d14e
  10. 15 Nov, 2017 4 commits
    • Andrei Elkin's avatar
      MDEV-9510 Segmentation fault in binlog thread causes crash · c7e38076
      Andrei Elkin authored
      With combination of --log-bin and Galera the server may crash
      reporting two characteristic stacks:
      
        /usr/sbin/mysqld(_ZN13MYSQL_BIN_LOG13mark_xid_doneEmb+0xc7)[0x7f182a8e2cb7]
        /usr/sbin/mysqld(binlog_background_thread+0x2b5)[0x7f182a8e3275]
      
      or
      
        /usr/sbin/mysqld(_ZN13MYSQL_BIN_LOG21do_checkpoint_requestEm+0x9d)[0x7ff395b2dafd]
        /usr/sbin/mysqld(_ZN13MYSQL_BIN_LOG20checkpoint_and_purgeEm+0x11)[0x7ff395b2db91]
        /usr/sbin/mysqld(_ZN13MYSQL_BIN_LOG16rotate_and_purgeEb+0xc2)[0x7ff395b300b2]
      
      The reason of the failure appears to be non-matching decrements for
        `xid_count_per_binlog::xid_count`
      which can occur when a transaction is executed having its connection issued
      `SET @@sql_log_bin=0`. In such case the xid count is not incremented but
      its decrements still runs to turn `binlog_xid_count_list` into improper state
      which the following FLUSH BINARY LOGS exposes through the crash.
      
      *Note_1*: the regression test reuses an existing galera.sql_log_bin
      which does not run stably (even in its base form) by mtr with --log-bin.
      
      *Note_2*: 10.0-galera branch is free of this issue having missed MDEV-7205
      fixes.
      c7e38076
    • Andrei Elkin's avatar
      MDEV-12012/MDEV-11969 Can't remove GTIDs for a stale GTID Domain ID · aae49327
      Andrei Elkin authored
      As reported in MDEV-11969 "there's no way to ditch knowledge" about some
      domain that is no longer updated on a server. Besides being of annoyance to
      clutter output in DBA console stale domains can prevent the slave
      to connect the master as MDEV-12012 witnesses.
      What domain is obsolete must be evaluated by the user (DBA) according
      to whether the domain info is still relevant and will the domain ever
      receive any update.
      
      This patch introduces a method to discard obsolete gtid domains from
      the server binlog state. The removal requires no event group from such
      domain present in existing binlog files though. If there are any the
      containing logs must be first PURGEd in order for
      
        FLUSH BINARY LOGS DELETE_DOMAIN_ID=(list-of-domains)
      
      succeed. Otherwise the command returns an error.
      
      The list of obsolete domains can be computed through
      intersecting two sets - the earliest (first) binlog's Gtid_list
      and the current value of @@global.gtid_binlog_state - and extracting
      the domain id components from the intersection list items.
      The new DELETE_DOMAIN_ID featured FLUSH continues to rotate binlog
      omitting the deleted domains from the active binlog file's Gtid_list.
      Notice though when the command is ineffective - that none of requested to delete
      domain exists in the binlog state - rotation does not occur.
      
      Obsolete domain deletion is not harmful for connected slaves as long
      as master side binlog files *purge* is synchronized with FLUSH-DELETE_DOMAIN_ID.
      The slaves must have the last event from purged files processed as usual,
      in order not to bump later into requesting a gtid from a file which
      was already gone.
      While the command is not replicated (as ordinary FLUSH BINLOG LOGS is)
      slaves, even though having extra domains, won't suffer from reconnection errors
      thanks to master-slave gtid connection protocol allowing the master
      to be ignorant about a gtid domain.
      Should at failover such slave to be promoted into master role it may run
      the ex-master's
      
       FLUSH BINARY LOGS DELETE_DOMAIN_ID=(list-of-domains)
      
      to clean its own binlog state.
      
      NOTES.
        suite/perfschema/r/start_server_low_digest.result
      is re-recorded as consequence of internal parser codes changes.
      aae49327
    • Oleksandr Byelkin's avatar
      MDEV-13453: Executing a query via CTE requires more permissions than the query itself · 88cc6db0
      Oleksandr Byelkin authored
      Fix of nondebuging version issue
      88cc6db0
    • Marko Mäkelä's avatar
      5e7435c4
  11. 14 Nov, 2017 2 commits