mariadb/storage/innobase/include
Marko Mäkelä 9f89b94ba6 MDEV-12358 Work around what looks like a bug in GCC 7.1.0
The parameter thr of the function btr_cur_optimistic_insert()
is not declared as nonnull, but GCC 7.1.0 with -O3 is wrongly
optimizing away the first part of the condition
UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)
when the function is being called by row_merge_insert_index_tuples()
with thr==NULL.

The fake_changes is an XtraDB addition. This GCC bug only appears
to have an impact on XtraDB, not InnoDB.

We work around the problem by not attempting to dereference thr
when both BTR_NO_LOCKING_FLAG and BTR_NO_UNDO_LOG_FLAG are set
in the flags. Probably BTR_NO_LOCKING_FLAG alone should suffice.

btr_cur_optimistic_insert(), btr_cur_pessimistic_insert(),
btr_cur_pessimistic_update(): Correct comments that disagree with
usage and with nonnull attributes. No other parameter than thr can
actually be NULL.

row_ins_duplicate_error_in_clust(): Remove an unused parameter.

innobase_is_fake_change(): Unused function; remove.

ibuf_insert_low(), row_log_table_apply(), row_log_apply(),
row_undo_mod_clust_low():
Because we will be passing BTR_NO_LOCKING_FLAG | BTR_NO_UNDO_LOG_FLAG
in the flags, the trx->fake_changes flag will be treated as false,
which is the right thing to do at these low-level operations
(change buffer merge, ALTER TABLE…LOCK=NONE, or ROLLBACK).
This might be fixing actual XtraDB bugs.

Other callers that pass these two flags are also passing thr=NULL,
implying fake_changes=false. (Some callers in ROLLBACK are passing
BTR_NO_LOCKING_FLAG and a nonnull thr. In these callers, fake_changes
better be false, to avoid corruption.)
2017-05-17 16:09:22 +03:00
..
api0api.h 5.6.31 2016-06-21 14:21:03 +02:00
api0misc.h move to storage/innobase 2015-05-04 19:17:21 +02:00
btr0btr.h 5.6.31 2016-06-21 14:21:03 +02:00
btr0btr.ic 5.6.31 2016-06-21 14:21:03 +02:00
btr0cur.h MDEV-12358 Work around what looks like a bug in GCC 7.1.0 2017-05-17 16:09:22 +03:00
btr0cur.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
btr0pcur.h 5.6.31 2016-06-21 14:21:03 +02:00
btr0pcur.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
btr0sea.h 5.6.31 2016-06-21 14:21:03 +02:00
btr0sea.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
btr0types.h 5.6.31 2016-06-21 14:21:03 +02:00
buf0buddy.h 5.6.31 2016-06-21 14:21:03 +02:00
buf0buddy.ic 5.6.31 2016-06-21 14:21:03 +02:00
buf0buf.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00
buf0buf.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
buf0checksum.h move to storage/innobase 2015-05-04 19:17:21 +02:00
buf0dblwr.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00
buf0dump.h move to storage/innobase 2015-05-04 19:17:21 +02:00
buf0flu.h 5.6.31 2016-06-21 14:21:03 +02:00
buf0flu.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
buf0lru.h 5.6.31 2016-06-21 14:21:03 +02:00
buf0lru.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
buf0rea.h move to storage/innobase 2015-05-04 19:17:21 +02:00
buf0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
data0data.h 5.6.31 2016-06-21 14:21:03 +02:00
data0data.ic 5.6.31 2016-06-21 14:21:03 +02:00
data0type.h move to storage/innobase 2015-05-04 19:17:21 +02:00
data0type.ic Silence bogus GCC 7 warnings -Wimplicit-fallthrough 2017-05-17 08:07:02 +03:00
data0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
db0err.h move to storage/innobase 2015-05-04 19:17:21 +02:00
dict0boot.h 5.6.31 2016-06-21 14:21:03 +02:00
dict0boot.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
dict0crea.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
dict0crea.ic 5.6.31 2016-06-21 14:21:03 +02:00
dict0dict.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
dict0dict.ic Merge branch '5.5' into 10.0 2017-03-03 01:37:54 +02:00
dict0load.h 5.6.31 2016-06-21 14:21:03 +02:00
dict0load.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
dict0mem.h Merge branch '5.5' into 10.0 2017-03-03 01:37:54 +02:00
dict0mem.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
dict0priv.h move to storage/innobase 2015-05-04 19:17:21 +02:00
dict0priv.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
dict0stats.h 5.6.31 2016-06-21 14:21:03 +02:00
dict0stats.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
dict0stats_bg.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00
dict0stats_bg.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
dict0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
dyn0dyn.h 5.6.31 2016-06-21 14:21:03 +02:00
dyn0dyn.ic Merge branch '5.5' into 10.0 2017-03-03 01:37:54 +02:00
eval0eval.h move to storage/innobase 2015-05-04 19:17:21 +02:00
eval0eval.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
eval0proc.h move to storage/innobase 2015-05-04 19:17:21 +02:00
eval0proc.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
fil0fil.h fil_create_new_single_table_tablespace(): Correct a bogus nonnull attribute 2017-05-17 13:49:51 +03:00
fsp0fsp.h Merge branch '5.5' into 10.0 2017-03-03 01:37:54 +02:00
fsp0fsp.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
fsp0types.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00
fts0ast.h 5.6.31 2016-06-21 14:21:03 +02:00
fts0blex.h move to storage/innobase 2015-05-04 19:17:21 +02:00
fts0fts.h MDEV-11233 CREATE FULLTEXT INDEX with a token longer than 127 bytes 2017-01-27 10:19:39 +02:00
fts0opt.h move to storage/innobase 2015-05-04 19:17:21 +02:00
fts0pars.h move to storage/innobase 2015-05-04 19:17:21 +02:00
fts0priv.h 5.6.31 2016-06-21 14:21:03 +02:00
fts0priv.ic 5.6.31 2016-06-21 14:21:03 +02:00
fts0tlex.h move to storage/innobase 2015-05-04 19:17:21 +02:00
fts0types.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00
fts0types.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
fts0vlc.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
fut0fut.h move to storage/innobase 2015-05-04 19:17:21 +02:00
fut0fut.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
fut0lst.h move to storage/innobase 2015-05-04 19:17:21 +02:00
fut0lst.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ha0ha.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ha0ha.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ha0storage.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ha0storage.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ha_prototypes.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
handler0alter.h 5.6.31 2016-06-21 14:21:03 +02:00
hash0hash.h move to storage/innobase 2015-05-04 19:17:21 +02:00
hash0hash.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ibuf0ibuf.h 5.6.31 2016-06-21 14:21:03 +02:00
ibuf0ibuf.ic 5.6.27 2015-10-09 17:21:46 +02:00
ibuf0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
lock0iter.h move to storage/innobase 2015-05-04 19:17:21 +02:00
lock0lock.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00
lock0lock.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
lock0priv.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
lock0priv.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
lock0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
log0log.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00
log0log.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
log0recv.h Merge 5.5 into 10.0 2017-03-08 11:40:43 +02:00
log0recv.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
mach0data.h 5.6.31 2016-06-21 14:21:03 +02:00
mach0data.ic Silence bogus GCC 7 warnings -Wimplicit-fallthrough 2017-05-17 08:07:02 +03:00
mem0dbg.h move to storage/innobase 2015-05-04 19:17:21 +02:00
mem0dbg.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
mem0mem.h 5.6.31 2016-06-21 14:21:03 +02:00
mem0mem.ic 5.6.31 2016-06-21 14:21:03 +02:00
mem0pool.h move to storage/innobase 2015-05-04 19:17:21 +02:00
mem0pool.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
mtr0log.h move to storage/innobase 2015-05-04 19:17:21 +02:00
mtr0log.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
mtr0mtr.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
mtr0mtr.ic Fix gcc 6.3.x compiler warnings. 2017-02-16 12:02:31 +02:00
mtr0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
os0file.h MDEV-12534 Use atomic operations whenever available 2017-04-20 16:29:12 +03:00
os0file.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
os0once.h move to storage/innobase 2015-05-04 19:17:21 +02:00
os0proc.h move to storage/innobase 2015-05-04 19:17:21 +02:00
os0proc.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
os0sync.h Fix the Solaris compilation after MDEV-12674 2017-05-15 10:26:42 +03:00
os0sync.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
os0thread.h 5.6.35 2017-01-07 14:24:42 +02:00
os0thread.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
page0cur.h 5.6.31 2016-06-21 14:21:03 +02:00
page0cur.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
page0page.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
page0page.ic Merge branch '5.5' into 10.0 2017-03-03 01:37:54 +02:00
page0types.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
page0zip.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
page0zip.ic Fix an incorrect debug assertion 2017-05-17 08:00:29 +03:00
pars0grm.h move to storage/innobase 2015-05-04 19:17:21 +02:00
pars0opt.h move to storage/innobase 2015-05-04 19:17:21 +02:00
pars0opt.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
pars0pars.h 5.6.31 2016-06-21 14:21:03 +02:00
pars0pars.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
pars0sym.h move to storage/innobase 2015-05-04 19:17:21 +02:00
pars0sym.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
pars0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
que0que.h move to storage/innobase 2015-05-04 19:17:21 +02:00
que0que.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
que0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
read0read.h 5.6.31 2016-06-21 14:21:03 +02:00
read0read.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
read0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
rem0cmp.h 5.6.31 2016-06-21 14:21:03 +02:00
rem0cmp.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
rem0rec.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
rem0rec.ic Fix gcc 6.3.x compiler warnings. 2017-02-16 12:02:31 +02:00
rem0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
row0ext.h move to storage/innobase 2015-05-04 19:17:21 +02:00
row0ext.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0ftsort.h 5.6.31 2016-06-21 14:21:03 +02:00
row0import.h 5.6.31 2016-06-21 14:21:03 +02:00
row0import.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0ins.h 5.6.31 2016-06-21 14:21:03 +02:00
row0ins.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0log.h 5.6.31 2016-06-21 14:21:03 +02:00
row0log.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0merge.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
row0mysql.h Merge following commit from 5.5: 2016-06-23 07:42:40 +03:00
row0mysql.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0purge.h 5.6.31 2016-06-21 14:21:03 +02:00
row0purge.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0quiesce.h 5.6.31 2016-06-21 14:21:03 +02:00
row0quiesce.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0row.h 5.6.31 2016-06-21 14:21:03 +02:00
row0row.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0sel.h 5.6.31 2016-06-21 14:21:03 +02:00
row0sel.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
row0uins.h 5.6.31 2016-06-21 14:21:03 +02:00
row0uins.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0umod.h 5.6.31 2016-06-21 14:21:03 +02:00
row0umod.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0undo.h move to storage/innobase 2015-05-04 19:17:21 +02:00
row0undo.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0upd.h 5.6.31 2016-06-21 14:21:03 +02:00
row0upd.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
row0vers.h 5.6.31 2016-06-21 14:21:03 +02:00
row0vers.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
srv0conc.h move to storage/innobase 2015-05-04 19:17:21 +02:00
srv0mon.h MDEV-12534 Use atomic operations whenever available 2017-04-20 16:29:12 +03:00
srv0mon.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
srv0srv.h MDEV-12674 Innodb_row_lock_current_waits has overflow 2017-05-12 12:24:53 +03:00
srv0srv.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
srv0start.h 5.6.31 2016-06-21 14:21:03 +02:00
sync0arr.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
sync0arr.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
sync0rw.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
sync0rw.ic Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
sync0sync.h MDEV-11520 Extending an InnoDB data file unnecessarily allocates 2017-02-21 16:45:03 +02:00
sync0sync.ic Merge branch '5.5' into 10.0 2016-08-10 19:19:05 +02:00
sync0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0i_s.h move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0purge.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00
trx0purge.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0rec.h 5.6.31 2016-06-21 14:21:03 +02:00
trx0rec.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0roll.h 5.6.31 2016-06-21 14:21:03 +02:00
trx0roll.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0rseg.h move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0rseg.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0sys.h 5.6.31 2016-06-21 14:21:03 +02:00
trx0sys.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0trx.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
trx0trx.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0undo.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
trx0undo.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
trx0xa.h move to storage/innobase 2015-05-04 19:17:21 +02:00
univ.i MDEV-12488 Remove type mismatch in InnoDB printf-like calls 2017-04-21 12:06:29 +03:00
usr0sess.h move to storage/innobase 2015-05-04 19:17:21 +02:00
usr0sess.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
usr0types.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0bh.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0bh.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0byte.h 5.6.31 2016-06-21 14:21:03 +02:00
ut0byte.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0counter.h MDEV-12674 Innodb_row_lock_current_waits has overflow 2017-05-12 12:24:53 +03:00
ut0crc32.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0dbg.h 5.6.31 2016-06-21 14:21:03 +02:00
ut0list.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0list.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0lst.h Fix gcc 6.3.x compiler warnings. 2017-02-16 12:02:31 +02:00
ut0mem.h 5.6.31 2016-06-21 14:21:03 +02:00
ut0mem.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0rbt.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0rnd.h 5.6.31 2016-06-21 14:21:03 +02:00
ut0rnd.ic Silence bogus GCC 7 warnings -Wimplicit-fallthrough 2017-05-17 08:07:02 +03:00
ut0sort.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0ut.h Merge branch 'merge-innodb-5.6' into 10.0 2016-06-21 14:58:19 +02:00
ut0ut.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0vec.h move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0vec.ic move to storage/innobase 2015-05-04 19:17:21 +02:00
ut0wqueue.h MDEV-11802 innodb.innodb_bug14676111 fails 2017-02-20 12:20:52 +02:00