mariadb/storage/innobase
Marko Mäkelä 609d0a9194 MDEV-14407 Assertion failure during rollback
Rollback attempted to dereference DB_ROLL_PTR=0, which cannot possibly
be a valid undo log pointer. A safer canonical value would be
roll_ptr_t(1) << ROLL_PTR_INSERT_FLAG_POS
which is what was chosen in MDEV-12288, corresponding to reset_trx_id.

No deterministic test case for the bug was found. The simplest test
cases may be related to MDEV-11415, which suppresses undo logging for
ALGORITHM=COPY operations. In those operations, in the spirit of
MDEV-12288, we should actually have written reset_trx_id instead of
using the transaction identifier of the current transaction
(and a bogus value of DB_ROLL_PTR=0). However, thanks to MySQL Bug#28432
which I had fixed in MySQL 5.6.8 as part of WL#6255, access to the
rebuilt table by earlier-started transactions should actually have been
refused with ER_TABLE_DEF_CHANGED.

reset_trx_id: Move the definition to data0type.cc and the declaration
to data0type.h.

btr_cur_ins_lock_and_undo(): When undo logging is disabled, use the
safe value that corresponds to reset_trx_id.

btr_cur_optimistic_insert(): Validate the DB_TRX_ID,DB_ROLL_PTR before
inserting into a clustered index leaf page.

ins_node_t::sys_buf[]: Replaces row_id_buf and trx_id_buf and some
heap usage.

row_ins_alloc_sys_fields(): Init ins_node_t::sys_buf[] to reset_trx_id.

row_ins_buf(): Only if undo logging is enabled, copy trx->id
to node->sys_buf. Otherwise, rely on the initialization in
row_ins_alloc_sys_fields().

row_purge_reset_trx_id(): Invoke mlog_write_string() with reset_trx_id
directly. (No functional change.)

trx_undo_page_report_modify(): Assert that the DB_ROLL_PTR is not 0.

trx_undo_get_undo_rec_low(): Assert that the roll_ptr is valid before
trying to dereference it.

dict_index_t::is_primary(): Check if the index is the primary key.

PageConverter::adjust_cluster_record(): Fix
MDEV-15249 Crash in MVCC read after IMPORT TABLESPACE
by resetting the system fields to reset_trx_id instead of writing
the current transaction ID (which will be committed at the
end of the IMPORT TABLESPACE) and DB_ROLL_PTR=0.
This can partially be viewed as a follow-up fix of MDEV-12288,
because IMPORT should already then have written
DB_TRX_ID=0 and DB_ROLL_PTR=1<<55 to prevent unnecessary
DB_TRX_ID lookups in subsequent accesses to the table.
2018-02-08 12:14:34 +02:00
..
btr MDEV-14407 Assertion failure during rollback 2018-02-08 12:14:34 +02:00
buf MDEV-15091 : Windows, 64bit: reenable and fix warning C4267 (conversion from 'size_t' to 'type', possible loss of data) 2018-02-06 12:55:58 +00:00
data MDEV-14407 Assertion failure during rollback 2018-02-08 12:14:34 +02:00
dict Windows : reenable warning C4805 (unsafe mix of types in bool operations) 2018-02-07 20:12:12 +00:00
eval MDEV-12271 Port MySQL 8.0 Bug#23150562 REMOVE UNIV_MUST_NOT_INLINE AND UNIV_NONINL 2017-03-17 12:42:07 +02:00
fil MDEV-15091 : Windows, 64bit: reenable and fix warning C4267 (conversion from 'size_t' to 'type', possible loss of data) 2018-02-06 12:55:58 +00:00
fsp MDEV-14606 Assertion failure on IMPORT TABLESPACE 2017-12-08 09:53:11 +02:00
fts Merge bb-10.2-ext into 10.3 2018-01-30 21:26:53 +02:00
fut MDEV-12270 Port MySQL 8.0 Bug#21141390 REMOVE UNUSED FUNCTIONS AND CONVERT GLOBAL SYMBOLS TO STATIC 2017-03-17 12:48:50 +02:00
gis Merge bb-10.2-ext into 10.3 2018-01-11 19:44:41 +02:00
ha Skip btr_search_latches[] in SHOW ENGINE INNODB STATUS 2017-12-12 20:00:28 +02:00
handler Windows : reenable warning C4805 (unsafe mix of types in bool operations) 2018-02-07 20:12:12 +00:00
ibuf Merge bb-10.2-ext into 10.3 2018-01-24 14:00:33 +02:00
include MDEV-14407 Assertion failure during rollback 2018-02-08 12:14:34 +02:00
lock Windows : reenable warning C4805 (unsafe mix of types in bool operations) 2018-02-07 20:12:12 +00:00
log MDEV-15091 : Windows, 64bit: reenable and fix warning C4267 (conversion from 'size_t' to 'type', possible loss of data) 2018-02-06 12:55:58 +00:00
mach Fix Bug#24707869 GCC 5 AND 6 MISCOMPILE MACH_PARSE_COMPRESSED 2017-04-26 23:03:29 +03:00
mem Inline definition of mem_heap_dup(), mem_heap_strdup(), mem_heap_strdupl() 2017-09-05 08:54:36 +03:00
mtr Merge bb-10.2-ext into 10.3 2018-01-30 21:04:48 +02:00
mysql-test/storage_engine Merge branch '10.0' into 10.1 2017-08-08 10:18:43 +02:00
os Windows, compiling : use /permissive- switch to improve conformance 2018-02-07 20:22:30 +00:00
page MDEV-15132 Avoid accessing the TRX_SYS page 2018-01-31 10:24:19 +02:00
pars IB: combine is_delete, vers_delete into enum [closes #337] 2017-11-28 15:03:25 +03:00
que MDEV-14824 Assertion `!trx_is_started(trx)' failed in innobase_start_trx_and_assign_read_view 2018-01-11 16:34:31 +02:00
read MDEV-15104 - Optimise MVCC snapshot 2018-01-31 20:13:34 +04:00
rem MDEV-15091 : Windows, 64bit: reenable and fix warning C4267 (conversion from 'size_t' to 'type', possible loss of data) 2018-02-06 12:55:58 +00:00
row MDEV-14407 Assertion failure during rollback 2018-02-08 12:14:34 +02:00
srv Windows : reenable warning C4805 (unsafe mix of types in bool operations) 2018-02-07 20:12:12 +00:00
sync Windows, compiling : use /permissive- switch to improve conformance 2018-02-07 20:22:30 +00:00
trx MDEV-14407 Assertion failure during rollback 2018-02-08 12:14:34 +02:00
usr Merge 10.1 into 10.2 2017-05-22 09:46:51 +03:00
ut MDEV-15104 - Remove trx_sys_t::rw_trx_ids 2018-01-31 15:18:21 +04:00
bzip2.cmake cleanup: innodb files in cmake/ 2017-03-29 00:40:22 +02:00
CMakeLists.txt MDEV-15091 : Windows, 64bit: reenable and fix warning C4267 (conversion from 'size_t' to 'type', possible loss of data) 2018-02-06 12:55:58 +00:00
compile-innodb
COPYING.Google
COPYING.Percona
innodb.cmake Merge bb-10.2-ext into 10.3 2017-12-06 19:36:33 +02:00
lz4.cmake cleanup: innodb files in cmake/ 2017-03-29 00:40:22 +02:00
lzma.cmake cleanup: innodb files in cmake/ 2017-03-29 00:40:22 +02:00
lzo.cmake cleanup: innodb files in cmake/ 2017-03-29 00:40:22 +02:00
plugin_exports
snappy.cmake cleanup: innodb files in cmake/ 2017-03-29 00:40:22 +02:00