1. 20 Nov, 2017 1 commit
    • Marko Mäkelä's avatar
      MDEV-14310 Possible corruption by table-rebuilding or index-creating ALTER TABLE…ALGORITHM=INPLACE · ce64a65f
      Marko Mäkelä authored
      Also, MDEV-14317 When ALTER TABLE is aborted, do not write garbage pages to data files
      
      As pointed out by Shaohua Wang, the merge of MDEV-13328 from
      MariaDB 10.1 (based on MySQL 5.6) to 10.2 (based on 5.7)
      was performed incorrectly.
      
      Let us always pass a non-NULL FlushObserver* when writing
      to data files is desired.
      
      FlushObserver::is_partial_flush(): Check if this is a bulk-load
      (partial flush of the tablespace).
      
      FlushObserver::is_interrupted(): Check for interrupt status.
      
      buf_LRU_flush_or_remove_pages(): Instead of trx_t*, take
      FlushObserver* as a parameter.
      
      buf_flush_or_remove_pages(): Remove the parameters flush, trx.
      If observer!=NULL, write out the data pages. Use the new predicate
      observer->is_partial() to distinguish a partial tablespace flush
      (after bulk-loading) from a full tablespace flush (export).
      Return a bool (whether all pages were removed from the flush_list).
      
      buf_flush_dirty_pages(): Remove the parameter trx.
      ce64a65f
  2. 18 Nov, 2017 1 commit
  3. 17 Nov, 2017 1 commit
  4. 16 Nov, 2017 5 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-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
  5. 15 Nov, 2017 2 commits
  6. 14 Nov, 2017 2 commits
  7. 13 Nov, 2017 4 commits
  8. 12 Nov, 2017 1 commit
  9. 11 Nov, 2017 1 commit
  10. 10 Nov, 2017 4 commits
  11. 09 Nov, 2017 8 commits
  12. 08 Nov, 2017 3 commits
  13. 07 Nov, 2017 7 commits