mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge 10.0 into 10.1
This commit is contained in:
@ -7210,6 +7210,32 @@ NULL
|
|||||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
#
|
#
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-13933: Wrong results in COUNT() query with EXISTS and exists_to_in
|
||||||
|
# (5.5 test)
|
||||||
|
#
|
||||||
|
SET @optimiser_switch_save= @@optimizer_switch;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t2 VALUES (5),(1);
|
||||||
|
CREATE TABLE t3 (c INT, KEY(c));
|
||||||
|
INSERT INTO t3 VALUES (5),(5);
|
||||||
|
SET optimizer_switch='semijoin=on';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET optimizer_switch='semijoin=off';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET @@optimizer_switch= @optimiser_switch_save;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
End of 5.5 tests
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7210,6 +7210,32 @@ NULL
|
|||||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
#
|
#
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-13933: Wrong results in COUNT() query with EXISTS and exists_to_in
|
||||||
|
# (5.5 test)
|
||||||
|
#
|
||||||
|
SET @optimiser_switch_save= @@optimizer_switch;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t2 VALUES (5),(1);
|
||||||
|
CREATE TABLE t3 (c INT, KEY(c));
|
||||||
|
INSERT INTO t3 VALUES (5),(5);
|
||||||
|
SET optimizer_switch='semijoin=on';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET optimizer_switch='semijoin=off';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET @@optimizer_switch= @optimiser_switch_save;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
End of 5.5 tests
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7203,6 +7203,32 @@ NULL
|
|||||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
#
|
#
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-13933: Wrong results in COUNT() query with EXISTS and exists_to_in
|
||||||
|
# (5.5 test)
|
||||||
|
#
|
||||||
|
SET @optimiser_switch_save= @@optimizer_switch;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t2 VALUES (5),(1);
|
||||||
|
CREATE TABLE t3 (c INT, KEY(c));
|
||||||
|
INSERT INTO t3 VALUES (5),(5);
|
||||||
|
SET optimizer_switch='semijoin=on';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET optimizer_switch='semijoin=off';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET @@optimizer_switch= @optimiser_switch_save;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
End of 5.5 tests
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7201,6 +7201,32 @@ NULL
|
|||||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
#
|
#
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-13933: Wrong results in COUNT() query with EXISTS and exists_to_in
|
||||||
|
# (5.5 test)
|
||||||
|
#
|
||||||
|
SET @optimiser_switch_save= @@optimizer_switch;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t2 VALUES (5),(1);
|
||||||
|
CREATE TABLE t3 (c INT, KEY(c));
|
||||||
|
INSERT INTO t3 VALUES (5),(5);
|
||||||
|
SET optimizer_switch='semijoin=on';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET optimizer_switch='semijoin=off';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET @@optimizer_switch= @optimiser_switch_save;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
End of 5.5 tests
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7216,6 +7216,32 @@ NULL
|
|||||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
#
|
#
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-13933: Wrong results in COUNT() query with EXISTS and exists_to_in
|
||||||
|
# (5.5 test)
|
||||||
|
#
|
||||||
|
SET @optimiser_switch_save= @@optimizer_switch;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t2 VALUES (5),(1);
|
||||||
|
CREATE TABLE t3 (c INT, KEY(c));
|
||||||
|
INSERT INTO t3 VALUES (5),(5);
|
||||||
|
SET optimizer_switch='semijoin=on';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET optimizer_switch='semijoin=off';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET @@optimizer_switch= @optimiser_switch_save;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
End of 5.5 tests
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -7201,6 +7201,32 @@ NULL
|
|||||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||||
#
|
#
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-13933: Wrong results in COUNT() query with EXISTS and exists_to_in
|
||||||
|
# (5.5 test)
|
||||||
|
#
|
||||||
|
SET @optimiser_switch_save= @@optimizer_switch;
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t2 VALUES (5),(1);
|
||||||
|
CREATE TABLE t3 (c INT, KEY(c));
|
||||||
|
INSERT INTO t3 VALUES (5),(5);
|
||||||
|
SET optimizer_switch='semijoin=on';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET optimizer_switch='semijoin=off';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
a
|
||||||
|
5
|
||||||
|
5
|
||||||
|
SET @@optimizer_switch= @optimiser_switch_save;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
End of 5.5 tests
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||||
|
@ -2,3 +2,5 @@
|
|||||||
--default-storage-engine=MyISAM
|
--default-storage-engine=MyISAM
|
||||||
--innodb-strict-mode=0
|
--innodb-strict-mode=0
|
||||||
--innodb-file-per-table=0
|
--innodb-file-per-table=0
|
||||||
|
--loose-innodb-track-changed-pages
|
||||||
|
--loose-innodb-log-archive
|
||||||
|
@ -6072,6 +6072,33 @@ SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
|||||||
--echo #
|
--echo #
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-13933: Wrong results in COUNT() query with EXISTS and exists_to_in
|
||||||
|
--echo # (5.5 test)
|
||||||
|
--echo #
|
||||||
|
SET @optimiser_switch_save= @@optimizer_switch;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (1),(1),(1),(5),(5);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t2 VALUES (5),(1);
|
||||||
|
|
||||||
|
CREATE TABLE t3 (c INT, KEY(c));
|
||||||
|
INSERT INTO t3 VALUES (5),(5);
|
||||||
|
|
||||||
|
SET optimizer_switch='semijoin=on';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
|
||||||
|
SET optimizer_switch='semijoin=off';
|
||||||
|
select t1.a from t1 where t1.a in (select `test`.`t2`.`b` from `test`.`t2`)
|
||||||
|
and t1.a in (select `test`.`t3`.`c` from `test`.`t3`);
|
||||||
|
|
||||||
|
SET @@optimizer_switch= @optimiser_switch_save;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
|
||||||
|
--echo End of 5.5 tests
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2704,7 +2704,8 @@ void advance_sj_state(JOIN *join, table_map remaining_tables, uint idx,
|
|||||||
LooseScan detector in best_access_path)
|
LooseScan detector in best_access_path)
|
||||||
*/
|
*/
|
||||||
remaining_tables &= ~new_join_tab->table->map;
|
remaining_tables &= ~new_join_tab->table->map;
|
||||||
table_map dups_producing_tables;
|
table_map dups_producing_tables, prev_dups_producing_tables,
|
||||||
|
prev_sjm_lookup_tables;
|
||||||
|
|
||||||
if (idx == join->const_tables)
|
if (idx == join->const_tables)
|
||||||
dups_producing_tables= 0;
|
dups_producing_tables= 0;
|
||||||
@ -2715,7 +2716,7 @@ void advance_sj_state(JOIN *join, table_map remaining_tables, uint idx,
|
|||||||
if ((emb_sj_nest= new_join_tab->emb_sj_nest))
|
if ((emb_sj_nest= new_join_tab->emb_sj_nest))
|
||||||
dups_producing_tables |= emb_sj_nest->sj_inner_tables;
|
dups_producing_tables |= emb_sj_nest->sj_inner_tables;
|
||||||
|
|
||||||
Semi_join_strategy_picker **strategy;
|
Semi_join_strategy_picker **strategy, **prev_strategy;
|
||||||
if (idx == join->const_tables)
|
if (idx == join->const_tables)
|
||||||
{
|
{
|
||||||
/* First table, initialize pickers */
|
/* First table, initialize pickers */
|
||||||
@ -2767,23 +2768,54 @@ void advance_sj_state(JOIN *join, table_map remaining_tables, uint idx,
|
|||||||
3. We have no clue what to do about fanount of semi-join Y.
|
3. We have no clue what to do about fanount of semi-join Y.
|
||||||
*/
|
*/
|
||||||
if ((dups_producing_tables & handled_fanout) ||
|
if ((dups_producing_tables & handled_fanout) ||
|
||||||
(read_time < *current_read_time &&
|
(read_time < *current_read_time &&
|
||||||
!(handled_fanout & pos->inner_tables_handled_with_other_sjs)))
|
!(handled_fanout & pos->inner_tables_handled_with_other_sjs)))
|
||||||
{
|
{
|
||||||
/* Mark strategy as used */
|
DBUG_ASSERT(pos->sj_strategy != sj_strategy);
|
||||||
(*strategy)->mark_used();
|
/*
|
||||||
pos->sj_strategy= sj_strategy;
|
If the strategy choosen first time or
|
||||||
if (sj_strategy == SJ_OPT_MATERIALIZE)
|
the strategy replace strategy which was used to exectly the same
|
||||||
join->sjm_lookup_tables |= handled_fanout;
|
tables
|
||||||
|
*/
|
||||||
|
if (pos->sj_strategy == SJ_OPT_NONE ||
|
||||||
|
handled_fanout ==
|
||||||
|
(prev_dups_producing_tables ^ dups_producing_tables))
|
||||||
|
{
|
||||||
|
prev_strategy= strategy;
|
||||||
|
if (pos->sj_strategy == SJ_OPT_NONE)
|
||||||
|
{
|
||||||
|
prev_dups_producing_tables= dups_producing_tables;
|
||||||
|
prev_sjm_lookup_tables= join->sjm_lookup_tables;
|
||||||
|
}
|
||||||
|
/* Mark strategy as used */
|
||||||
|
(*strategy)->mark_used();
|
||||||
|
pos->sj_strategy= sj_strategy;
|
||||||
|
if (sj_strategy == SJ_OPT_MATERIALIZE)
|
||||||
|
join->sjm_lookup_tables |= handled_fanout;
|
||||||
|
else
|
||||||
|
join->sjm_lookup_tables &= ~handled_fanout;
|
||||||
|
*current_read_time= read_time;
|
||||||
|
*current_record_count= rec_count;
|
||||||
|
dups_producing_tables &= ~handled_fanout;
|
||||||
|
//TODO: update bitmap of semi-joins that were handled together with
|
||||||
|
// others.
|
||||||
|
if (is_multiple_semi_joins(join, join->positions, idx,
|
||||||
|
handled_fanout))
|
||||||
|
pos->inner_tables_handled_with_other_sjs |= handled_fanout;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
join->sjm_lookup_tables &= ~handled_fanout;
|
{
|
||||||
*current_read_time= read_time;
|
/* Conflict fall to most general variant */
|
||||||
*current_record_count= rec_count;
|
(*prev_strategy)->set_empty();
|
||||||
dups_producing_tables &= ~handled_fanout;
|
dups_producing_tables= prev_dups_producing_tables;
|
||||||
//TODO: update bitmap of semi-joins that were handled together with
|
join->sjm_lookup_tables= prev_sjm_lookup_tables;
|
||||||
// others.
|
// mark it 'none' to avpoid loops
|
||||||
if (is_multiple_semi_joins(join, join->positions, idx, handled_fanout))
|
pos->sj_strategy= SJ_OPT_NONE;
|
||||||
pos->inner_tables_handled_with_other_sjs |= handled_fanout;
|
// next skip to last;
|
||||||
|
strategy= pickers +
|
||||||
|
(sizeof(pickers)/sizeof(Semi_join_strategy_picker*) - 3);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -584,32 +584,6 @@ trx_purge_rseg_get_next_history_log(
|
|||||||
|
|
||||||
mutex_exit(&(rseg->mutex));
|
mutex_exit(&(rseg->mutex));
|
||||||
mtr_commit(&mtr);
|
mtr_commit(&mtr);
|
||||||
|
|
||||||
mutex_enter(&trx_sys->mutex);
|
|
||||||
|
|
||||||
/* Add debug code to track history list corruption reported
|
|
||||||
on the MySQL mailing list on Nov 9, 2004. The fut0lst.cc
|
|
||||||
file-based list was corrupt. The prev node pointer was
|
|
||||||
FIL_NULL, even though the list length was over 8 million nodes!
|
|
||||||
We assume that purge truncates the history list in large
|
|
||||||
size pieces, and if we here reach the head of the list, the
|
|
||||||
list cannot be longer than 2000 000 undo logs now. */
|
|
||||||
|
|
||||||
if (trx_sys->rseg_history_len > 2000000) {
|
|
||||||
ut_print_timestamp(stderr);
|
|
||||||
fprintf(stderr,
|
|
||||||
" InnoDB: Warning: purge reached the"
|
|
||||||
" head of the history list,\n"
|
|
||||||
"InnoDB: but its length is still"
|
|
||||||
" reported as %lu! Make a detailed bug\n"
|
|
||||||
"InnoDB: report, and submit it"
|
|
||||||
" to https://jira.mariadb.org/\n",
|
|
||||||
(ulong) trx_sys->rseg_history_len);
|
|
||||||
ut_ad(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
mutex_exit(&trx_sys->mutex);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -584,32 +584,6 @@ trx_purge_rseg_get_next_history_log(
|
|||||||
|
|
||||||
mutex_exit(&(rseg->mutex));
|
mutex_exit(&(rseg->mutex));
|
||||||
mtr_commit(&mtr);
|
mtr_commit(&mtr);
|
||||||
|
|
||||||
mutex_enter(&trx_sys->mutex);
|
|
||||||
|
|
||||||
/* Add debug code to track history list corruption reported
|
|
||||||
on the MySQL mailing list on Nov 9, 2004. The fut0lst.cc
|
|
||||||
file-based list was corrupt. The prev node pointer was
|
|
||||||
FIL_NULL, even though the list length was over 8 million nodes!
|
|
||||||
We assume that purge truncates the history list in large
|
|
||||||
size pieces, and if we here reach the head of the list, the
|
|
||||||
list cannot be longer than 2000 000 undo logs now. */
|
|
||||||
|
|
||||||
if (trx_sys->rseg_history_len > 2000000) {
|
|
||||||
ut_print_timestamp(stderr);
|
|
||||||
fprintf(stderr,
|
|
||||||
" InnoDB: Warning: purge reached the"
|
|
||||||
" head of the history list,\n"
|
|
||||||
"InnoDB: but its length is still"
|
|
||||||
" reported as %lu! Make a detailed bug\n"
|
|
||||||
"InnoDB: report, and submit it"
|
|
||||||
" to https://jira.mariadb.org/\n",
|
|
||||||
(ulong) trx_sys->rseg_history_len);
|
|
||||||
ut_ad(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
mutex_exit(&trx_sys->mutex);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user