Merge bb-10.2-ext into 10.3
This commit is contained in:
commit
6dd302d164
@ -14,7 +14,7 @@
|
||||
# License along with this library; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
# MA 02110-1301, USA
|
||||
|
||||
set -x -v
|
||||
cflags="$c_warnings $extra_flags $EXTRA_FLAGS $EXTRA_CFLAGS"
|
||||
cxxflags="$cxx_warnings $base_cxxflags $extra_flags $EXTRA_FLAGS $EXTRA_CXXFLAGS"
|
||||
extra_configs="$extra_configs $local_infile_configs $EXTRA_CONFIGS"
|
||||
@ -32,15 +32,19 @@ then
|
||||
configure="$configure --verbose"
|
||||
fi
|
||||
|
||||
commands=""
|
||||
# git clean -fdX removes all ignored (build) files
|
||||
commands="\
|
||||
if test -d .git
|
||||
then
|
||||
commands="\
|
||||
git clean -fdX
|
||||
cd ./libmariadb
|
||||
git submodule update
|
||||
cd ../storage/rocksdb/rocksdb
|
||||
git submodule update
|
||||
cd ../../..
|
||||
|
||||
cd ../../.."
|
||||
fi
|
||||
commands="$commands
|
||||
path=`dirname $0`
|
||||
. \"$path/autorun.sh\""
|
||||
|
||||
|
24
BUILD/compile-pentium64-asan-max
Executable file
24
BUILD/compile-pentium64-asan-max
Executable file
@ -0,0 +1,24 @@
|
||||
#! /bin/sh
|
||||
# Copyright (c) 2018, MariaDB Corporation.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
path=`dirname $0`
|
||||
. "$path/SETUP.sh"
|
||||
|
||||
extra_flags="$pentium64_cflags $debug_cflags -lasan -O -g -fsanitize=address"
|
||||
extra_configs="$pentium_configs $debug_configs $valgrind_configs $max_configs"
|
||||
export LDFLAGS="-ldl"
|
||||
|
||||
. "$path/FINISH.sh"
|
@ -142,6 +142,11 @@ IF(MSVC)
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805 /wd4996 /we4700 /we4311 /we4477 /we4302 /we4090 /wd4267 ")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805 /wd4996 /wd4291 /wd4577 /we4099 /we4700 /we4311 /we4477 /we4302 /we4090 /wd4267")
|
||||
|
||||
IF(MYSQL_MAINTAINER_MODE MATCHES "ERR")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
|
||||
ENDIF()
|
||||
|
||||
ENDIF()
|
||||
|
||||
# Always link with socket library
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit fe129ed39f33ba2b430aac91473baee84de88b12
|
||||
Subproject commit f3944bbd36af729b2f13313587018679c57de67d
|
@ -26,7 +26,20 @@
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
#include <psapi.h>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
/* Silence warning in OS header dbghelp.h */
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable : 4091)
|
||||
#endif
|
||||
|
||||
#include <dbghelp.h>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
/* Silence warning in OS header dbghelp.h */
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#include <tlhelp32.h>
|
||||
#include <vector>
|
||||
|
||||
|
@ -1265,3 +1265,33 @@ a
|
||||
4
|
||||
deallocate prepare stmt;
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-14852: CTE using temporary table in query
|
||||
# with two references to the CTE
|
||||
#
|
||||
create temporary table t1 (i int);
|
||||
insert into t1 values (5),(4),(1),(2),(3);
|
||||
with
|
||||
c1 as (select i from t1),
|
||||
c2 as (select i from c1 where c1.i=2)
|
||||
select i from c1 where i > 3 union select i from c2;
|
||||
i
|
||||
5
|
||||
4
|
||||
2
|
||||
drop table t1;
|
||||
create table t1 (term char(10));
|
||||
create temporary table t2 (term char(10));
|
||||
insert into t1 values ('TERM01'),('TERM02'),('TERM03');
|
||||
insert into t2 values ('TERM02'),('TERM03'),('TERM04');
|
||||
with c1 as (select * from t1), c2 as (select * from t2)
|
||||
(select * from c1 left outer join c2 on c1.term = c2.term)
|
||||
union all
|
||||
(select * from c1 right outer join c2 on c1.term = c2.term
|
||||
where c1.term is null);
|
||||
term term
|
||||
TERM02 TERM02
|
||||
TERM03 TERM03
|
||||
TERM01 NULL
|
||||
NULL TERM04
|
||||
drop table t1,t2;
|
||||
|
@ -2951,6 +2951,112 @@ limit 1
|
||||
ERROR HY000: Unacceptable mutual recursion with anchored table 'cte_1'
|
||||
drop table t1;
|
||||
#
|
||||
# mdev-14777: crash caused by the same as in mdev-14755
|
||||
#
|
||||
CREATE TABLE t1 (i1 int NOT NULL, i2 int);
|
||||
CREATE TABLE t2 (d1 int NOT NULL PRIMARY KEY);
|
||||
CREATE TABLE t3 (i int );
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
insert into t2 select seq from seq_1000_to_100000;
|
||||
insert into t3 select seq from seq_1_to_1000;
|
||||
SELECT *
|
||||
FROM
|
||||
(
|
||||
SELECT *
|
||||
FROM
|
||||
(
|
||||
WITH RECURSIVE rt AS
|
||||
(
|
||||
SELECT i2 P, i1 C FROM t1 WHERE i1 IN (SELECT d1 FROM t2)
|
||||
UNION
|
||||
SELECT t1.i2 P, rt.C C FROM t1, rt
|
||||
)
|
||||
SELECT C,P
|
||||
FROM ( SELECT P,C FROM rt WHERE NOT EXISTS (SELECT 1 FROM t1) ) Y
|
||||
) X
|
||||
WHERE 1 = 1
|
||||
) K, t3;
|
||||
C P i
|
||||
drop table t1,t2,t3;
|
||||
#
|
||||
# mdev-14879: subquery with recursive reference in WHERE of CTE
|
||||
#
|
||||
create table flights
|
||||
(departure varchar(32),
|
||||
arrival varchar(32),
|
||||
carrier varchar(20),
|
||||
flight_number char(7));
|
||||
insert into flights values
|
||||
('Seattle', 'Frankfurt', 'Lufthansa', 'LH 491'),
|
||||
('Seattle', 'Chicago', 'American', 'AA 2573'),
|
||||
('Seattle', 'Los Angeles', 'Alaska Air', 'AS 410'),
|
||||
('Chicago', 'New York', 'American', 'AA 375'),
|
||||
('Chicago', 'Montreal', 'Air Canada', 'AC 3053'),
|
||||
('Los Angeles', 'New York', 'Delta', 'DL 1197'),
|
||||
('Moscow', 'Tokyo', 'Aeroflot', 'SU 264'),
|
||||
('New York', 'Paris', 'Air France', 'AF 23'),
|
||||
('Frankfurt', 'Moscow', 'Lufthansa', 'LH 1444'),
|
||||
('Tokyo', 'Seattle', 'ANA', 'NH 178'),
|
||||
('Los Angeles', 'Tokyo', 'ANA', 'NH 175'),
|
||||
('Moscow', 'Los Angeles', 'Aeroflot', 'SU 106'),
|
||||
('Montreal', 'Paris', 'Air Canada', 'AC 870'),
|
||||
('Cairo', 'Paris', 'Air France', 'AF 503'),
|
||||
('New York', 'Seattle', 'American', 'AA 45'),
|
||||
('Paris', 'Chicago', 'Air France', 'AF 6734');
|
||||
with recursive destinations (city) as
|
||||
( select a.arrival from flights a where a.departure='Cairo'
|
||||
union
|
||||
select b.arrival from destinations r, flights b where r.city=b.departure)
|
||||
select * from destinations;
|
||||
city
|
||||
Paris
|
||||
Chicago
|
||||
New York
|
||||
Montreal
|
||||
Seattle
|
||||
Frankfurt
|
||||
Los Angeles
|
||||
Moscow
|
||||
Tokyo
|
||||
set standard_compliant_cte=0;
|
||||
with recursive destinations (city, legs) as
|
||||
(
|
||||
select a.arrival, 1 from flights a where a.departure='Cairo'
|
||||
union
|
||||
select b.arrival, r.legs + 1 from destinations r, flights b
|
||||
where r.city=b.departure and b.arrival not in (select city from destinations)
|
||||
)
|
||||
select * from destinations;
|
||||
city legs
|
||||
Paris 1
|
||||
Chicago 2
|
||||
New York 3
|
||||
Montreal 3
|
||||
Seattle 4
|
||||
Frankfurt 5
|
||||
Los Angeles 5
|
||||
Moscow 6
|
||||
Tokyo 6
|
||||
explain extended with recursive destinations (city, legs) as
|
||||
(
|
||||
select a.arrival, 1 from flights a where a.departure='Cairo'
|
||||
union
|
||||
select b.arrival, r.legs + 1 from destinations r, flights b
|
||||
where r.city=b.departure and b.arrival not in (select city from destinations)
|
||||
)
|
||||
select * from destinations;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 16 100.00
|
||||
2 DERIVED a ALL NULL NULL NULL NULL 16 100.00 Using where
|
||||
3 RECURSIVE UNION b ALL NULL NULL NULL NULL 16 100.00 Using where
|
||||
3 RECURSIVE UNION <derived2> ref key0 key0 35 test.b.departure 2 100.00
|
||||
4 DEPENDENT SUBQUERY <derived2> ALL NULL NULL NULL NULL 16 100.00 Using where
|
||||
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL NULL
|
||||
Warnings:
|
||||
Note 1003 with recursive destinations as (/* select#2 */ select `test`.`a`.`arrival` AS `city`,1 AS `legs` from `test`.`flights` `a` where `test`.`a`.`departure` = 'Cairo' union /* select#3 */ select `test`.`b`.`arrival` AS `arrival`,`r`.`legs` + 1 AS `r.legs + 1` from `destinations` `r` join `test`.`flights` `b` where `r`.`city` = `test`.`b`.`departure` and !<in_optimizer>(`test`.`b`.`arrival`,<exists>(/* select#4 */ select `destinations`.`city` from `destinations` where trigcond(`test`.`b`.`arrival` = `destinations`.`city` or `destinations`.`city` is null) having trigcond(`destinations`.`city` is null))))/* select#1 */ select `destinations`.`city` AS `city`,`destinations`.`legs` AS `legs` from `destinations`
|
||||
set standard_compliant_cte=default;
|
||||
drop table flights;
|
||||
#
|
||||
# MDEV-14217 [db crash] Recursive CTE when SELECT includes new field
|
||||
#
|
||||
CREATE TEMPORARY TABLE a_tbl (
|
||||
|
@ -12540,6 +12540,70 @@ EXPLAIN
|
||||
}
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-13454: consequence of mdev-14368 fixed for 5.5
|
||||
#
|
||||
SET sql_mode = 'ONLY_FULL_GROUP_BY';
|
||||
create table t1 (id int, id2 int);
|
||||
insert into t1 values (1,1),(2,3),(3,4),(7,2);
|
||||
create table t2(id2 int);
|
||||
insert t2 values (1),(2),(3);
|
||||
SELECT * FROM t1
|
||||
LEFT OUTER JOIN
|
||||
(SELECT id2, COUNT(*) as ct FROM t2 GROUP BY id2) vc USING (id2)
|
||||
WHERE (vc.ct>0);
|
||||
id2 id ct
|
||||
1 1 1
|
||||
3 2 1
|
||||
2 7 1
|
||||
EXPLAIN FORMAT=JSON SELECT * FROM t1
|
||||
LEFT OUTER JOIN
|
||||
(SELECT id2, COUNT(*) as ct FROM t2 GROUP BY id2) vc USING (id2)
|
||||
WHERE (vc.ct>0);
|
||||
EXPLAIN
|
||||
{
|
||||
"query_block": {
|
||||
"select_id": 1,
|
||||
"table": {
|
||||
"table_name": "<derived2>",
|
||||
"access_type": "ALL",
|
||||
"rows": 3,
|
||||
"filtered": 100,
|
||||
"attached_condition": "vc.ct > 0",
|
||||
"materialized": {
|
||||
"query_block": {
|
||||
"select_id": 2,
|
||||
"having_condition": "ct > 0",
|
||||
"filesort": {
|
||||
"sort_key": "t2.id2",
|
||||
"temporary_table": {
|
||||
"table": {
|
||||
"table_name": "t2",
|
||||
"access_type": "ALL",
|
||||
"rows": 3,
|
||||
"filtered": 100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"block-nl-join": {
|
||||
"table": {
|
||||
"table_name": "t1",
|
||||
"access_type": "ALL",
|
||||
"rows": 4,
|
||||
"filtered": 100
|
||||
},
|
||||
"buffer_type": "flat",
|
||||
"buffer_size": "256Kb",
|
||||
"join_type": "BNL",
|
||||
"attached_condition": "t1.id2 = vc.id2"
|
||||
}
|
||||
}
|
||||
}
|
||||
DROP TABLE t1,t2;
|
||||
SET sql_mode = DEFAULT;
|
||||
#
|
||||
# MDEV-10855: Pushdown into derived with window functions
|
||||
#
|
||||
set @save_optimizer_switch= @@optimizer_switch;
|
||||
|
@ -7214,6 +7214,32 @@ NULL
|
||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||
#
|
||||
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
|
||||
#
|
||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||
|
@ -7214,6 +7214,32 @@ NULL
|
||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||
#
|
||||
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
|
||||
#
|
||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||
|
@ -7207,6 +7207,32 @@ NULL
|
||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||
#
|
||||
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
|
||||
#
|
||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||
|
@ -7205,6 +7205,32 @@ NULL
|
||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||
#
|
||||
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
|
||||
#
|
||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||
|
@ -7220,6 +7220,32 @@ NULL
|
||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||
#
|
||||
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
|
||||
#
|
||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||
|
@ -7205,6 +7205,32 @@ NULL
|
||||
# SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||
#
|
||||
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
|
||||
#
|
||||
# MDEV-9487: Server crashes in Time_and_counter_tracker::incr_loops
|
||||
|
@ -17,6 +17,13 @@ WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
FOUND 1 /InnoDB: Upgrade after a crash is not supported. This redo log was created before MariaDB 10\.2\.2, and it appears corrupted/ in mysqld.1.err
|
||||
# empty redo log from before MariaDB 10.2.2
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
COUNT(*)
|
||||
1
|
||||
FOUND 1 /InnoDB: Upgrading redo log:/ in mysqld.1.err
|
||||
# redo log from "after" MariaDB 10.2.2, but with invalid header checksum
|
||||
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
@ -93,25 +100,38 @@ AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
FOUND 1 /InnoDB: MLOG_FILE_NAME incorrect:bigot/ in mysqld.1.err
|
||||
FOUND 1 /len 22; hex 38000000000012860cb7809781e800066269676f7400; asc 8 bigot ;/ in mysqld.1.err
|
||||
# missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
# 10.2 missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
NOT FOUND /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42$/ in mysqld.1.err
|
||||
# Clean 10.2 redo log
|
||||
FOUND 1 /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42/ in mysqld.1.err
|
||||
# 10.3 missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
InnoDB YES Supports transactions, row-level locking, foreign keys and encryption for tables YES YES YES
|
||||
FOUND 2 /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42/ in mysqld.1.err
|
||||
# Empty 10.3 redo log
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
COUNT(*)
|
||||
1
|
||||
FOUND 1 /InnoDB: .* started; log sequence number 1213970/ in mysqld.1.err
|
||||
# Empty 10.2 redo log
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
COUNT(*)
|
||||
0
|
||||
FOUND 1 /InnoDB: Upgrading redo log:/ in mysqld.1.err
|
||||
# Minimal MariaDB 10.1.21 encrypted redo log
|
||||
SELECT COUNT(*) `1` FROM INFORMATION_SCHEMA.ENGINES WHERE engine='innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
1
|
||||
1
|
||||
FOUND 1 /InnoDB: Encrypting redo log/ in mysqld.1.err
|
||||
FOUND 2 /InnoDB: Encrypting redo log/ in mysqld.1.err
|
||||
ib_buffer_pool
|
||||
ib_logfile0
|
||||
ib_logfile1
|
||||
|
@ -8,21 +8,15 @@ PRIMARY KEY(id)
|
||||
INSERT INTO t1 VALUES(1), (2), (3);
|
||||
BEGIN;
|
||||
SELECT * FROM t1 WHERE id = 1 FOR UPDATE;
|
||||
id
|
||||
1
|
||||
connect con1,localhost,root,,;
|
||||
BEGIN;
|
||||
SELECT * FROM t1 WHERE id = 2 FOR UPDATE;
|
||||
id
|
||||
2
|
||||
SELECT * FROM t1 WHERE id = 1 FOR UPDATE;
|
||||
connection default;
|
||||
SELECT * FROM t1 WHERE id = 2 FOR UPDATE;
|
||||
connection con1;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
ROLLBACK;
|
||||
connection default;
|
||||
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||
ROLLBACK;
|
||||
DROP TABLE t1;
|
||||
disconnect con1;
|
||||
|
@ -470,8 +470,6 @@ ddl_online_create_index 0
|
||||
ddl_pending_alter_table 0
|
||||
ddl_sort_file_alter_table 0
|
||||
ddl_log_file_alter_table 2
|
||||
connection con1;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
@ -498,6 +496,25 @@ ERROR 42000: Duplicate key name 'c2h'
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
SET GLOBAL innodb_monitor_disable = module_ddl;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-13205 assertion !dict_index_is_online_ddl(index) upon ALTER TABLE
|
||||
#
|
||||
CREATE TABLE t1 (c VARCHAR(64)) ENGINE=InnoDB;
|
||||
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL t1u_created WAIT_FOR dup_done';
|
||||
ALTER TABLE t1 ADD UNIQUE(c);
|
||||
connection con1;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR t1u_created';
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES('bar'),('bar');
|
||||
SET DEBUG_SYNC = 'now SIGNAL dup_done';
|
||||
connection default;
|
||||
ERROR 23000: Duplicate entry 'bar' for key 'c'
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
disconnect con1;
|
||||
CREATE TABLE t2 (c VARCHAR(64)) ENGINE=InnoDB;
|
||||
ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1 (c);
|
||||
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 150 "Foreign key constraint is incorrectly formed")
|
||||
DROP TABLE t2,t1;
|
||||
SET GLOBAL innodb_file_per_table = @global_innodb_file_per_table_orig;
|
||||
SET GLOBAL innodb_monitor_enable = default;
|
||||
SET GLOBAL innodb_monitor_disable = default;
|
||||
|
@ -0,0 +1,9 @@
|
||||
call mtr.add_suppression("\\[Warning\\] InnoDB: Difficult to find free blocks in the buffer pool.");
|
||||
SET SESSION debug_dbug="+d,ib_lru_force_no_free_page";
|
||||
CREATE TABLE t1 (j LONGBLOB) ENGINE = InnoDB;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (repeat('abcdefghijklmnopqrstuvwxyz',200));
|
||||
COMMIT;
|
||||
SET SESSION debug_dbug="";
|
||||
DROP TABLE t1;
|
||||
FOUND 1 /InnoDB: Difficult to find free blocks / in mysqld.1.err
|
@ -17,6 +17,13 @@ WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
FOUND 1 /InnoDB: Upgrade after a crash is not supported. This redo log was created before MariaDB 10\.2\.2, and it appears corrupted/ in mysqld.1.err
|
||||
# empty redo log from before MariaDB 10.2.2
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
COUNT(*)
|
||||
1
|
||||
FOUND 1 /InnoDB: Upgrading redo log:/ in mysqld.1.err
|
||||
# redo log from "after" MariaDB 10.2.2, but with invalid header checksum
|
||||
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
@ -93,19 +100,32 @@ AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
FOUND 1 /InnoDB: MLOG_FILE_NAME incorrect:bigot/ in mysqld.1.err
|
||||
FOUND 1 /len 22; hex 38000000000012860cb7809781e800066269676f7400; asc 8 bigot ;/ in mysqld.1.err
|
||||
# missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
# 10.2 missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
NOT FOUND /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42$/ in mysqld.1.err
|
||||
# Clean 10.2 redo log
|
||||
FOUND 1 /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42/ in mysqld.1.err
|
||||
# 10.3 missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
InnoDB YES Supports transactions, row-level locking, foreign keys and encryption for tables YES YES YES
|
||||
FOUND 1 /InnoDB: Upgrading redo log:/ in mysqld.1.err
|
||||
FOUND 2 /InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42/ in mysqld.1.err
|
||||
# Empty 10.3 redo log
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
COUNT(*)
|
||||
1
|
||||
FOUND 1 /InnoDB: .* started; log sequence number 1213970/ in mysqld.1.err
|
||||
# Empty 10.2 redo log
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
COUNT(*)
|
||||
1
|
||||
FOUND 2 /InnoDB: Upgrading redo log:/ in mysqld.1.err
|
||||
# Minimal MariaDB 10.1.21 encrypted redo log
|
||||
SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
|
@ -18,6 +18,8 @@ CREATE TABLE t1(
|
||||
|
||||
INSERT INTO t1 VALUES(1), (2), (3);
|
||||
|
||||
# We are not interested query results, only errors
|
||||
--disable_result_log
|
||||
BEGIN;
|
||||
|
||||
SELECT * FROM t1 WHERE id = 1 FOR UPDATE;
|
||||
@ -39,12 +41,22 @@ reap;
|
||||
|
||||
ROLLBACK;
|
||||
|
||||
#
|
||||
# Note here that con1 is the older transaction as it
|
||||
# query started wait first. Thus, con1 gets lock
|
||||
# wait timeout first. There is possibility that
|
||||
# default connection gets lock timeout also or
|
||||
# as con1 is rolled back it gets the locks it waited
|
||||
# and does the update.
|
||||
#
|
||||
connection default;
|
||||
--error ER_LOCK_WAIT_TIMEOUT
|
||||
--error 0,ER_LOCK_WAIT_TIMEOUT
|
||||
reap;
|
||||
|
||||
ROLLBACK;
|
||||
|
||||
--enable_result_log
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
disconnect con1;
|
||||
|
@ -457,8 +457,6 @@ connection default;
|
||||
reap;
|
||||
--enable_parsing
|
||||
#remove below con1 disconnect if above test case is enabled
|
||||
connection con1;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
@ -474,6 +472,31 @@ SET GLOBAL innodb_monitor_disable = module_ddl;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13205 assertion !dict_index_is_online_ddl(index) upon ALTER TABLE
|
||||
--echo #
|
||||
CREATE TABLE t1 (c VARCHAR(64)) ENGINE=InnoDB;
|
||||
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL t1u_created WAIT_FOR dup_done';
|
||||
send ALTER TABLE t1 ADD UNIQUE(c);
|
||||
|
||||
connection con1;
|
||||
SET DEBUG_SYNC = 'now WAIT_FOR t1u_created';
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES('bar'),('bar');
|
||||
SET DEBUG_SYNC = 'now SIGNAL dup_done';
|
||||
|
||||
connection default;
|
||||
--error ER_DUP_ENTRY
|
||||
reap;
|
||||
|
||||
SET DEBUG_SYNC = 'RESET';
|
||||
disconnect con1;
|
||||
CREATE TABLE t2 (c VARCHAR(64)) ENGINE=InnoDB;
|
||||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
ALTER TABLE t2 ADD FOREIGN KEY (c) REFERENCES t1 (c);
|
||||
DROP TABLE t2,t1;
|
||||
|
||||
# Check that all connections opened by test cases in this file are really
|
||||
# gone so execution of other tests won't be affected by their presence.
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
24
mysql-test/suite/innodb/t/innodb-lru-force-no-free-page.test
Normal file
24
mysql-test/suite/innodb/t/innodb-lru-force-no-free-page.test
Normal file
@ -0,0 +1,24 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
call mtr.add_suppression("\\[Warning\\] InnoDB: Difficult to find free blocks in the buffer pool.");
|
||||
|
||||
SET SESSION debug_dbug="+d,ib_lru_force_no_free_page";
|
||||
|
||||
CREATE TABLE t1 (j LONGBLOB) ENGINE = InnoDB;
|
||||
BEGIN;
|
||||
INSERT INTO t1 VALUES (repeat('abcdefghijklmnopqrstuvwxyz',200));
|
||||
COMMIT;
|
||||
|
||||
SET SESSION debug_dbug="";
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# There should be only one message
|
||||
#
|
||||
let SEARCH_RANGE= -50000;
|
||||
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||
--let SEARCH_PATTERN=InnoDB: Difficult to find free blocks
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
@ -2,3 +2,5 @@
|
||||
--default-storage-engine=MyISAM
|
||||
--innodb-strict-mode=0
|
||||
--innodb-file-per-table=0
|
||||
--loose-innodb-track-changed-pages
|
||||
--loose-innodb-log-archive
|
||||
|
@ -8,12 +8,10 @@
|
||||
-- source include/not_encrypted.inc
|
||||
|
||||
--disable_query_log
|
||||
call mtr.add_suppression("InnoDB: Table `test`.`t1` is corrupted. Please drop the table and recreate.");
|
||||
call mtr.add_suppression("InnoDB: Cannot open table test/t1 from the internal data dictionary of InnoDB though the .frm file for the table exists. Please refer to http://dev.mysql.com/doc/refman/5.7/en/innodb-troubleshooting.html for how to resolve the issue.");
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t1 page \[page id: space=[0-9]+, page number=[0-9]+\]. You may have to recover from a backup.");
|
||||
call mtr.add_suppression("InnoDB: We detected index corruption in an InnoDB type table.*");
|
||||
call mtr.add_suppression("mysqld: Index for table 't1' is corrupt; try to repair it");
|
||||
call mtr.add_suppression("mysqld.exe: Index for table 't1' is corrupt; try to repair it");
|
||||
call mtr.add_suppression("InnoDB: Table `test`\\.`t1` is corrupted\\. Please drop the table and recreate\\.");
|
||||
call mtr.add_suppression("InnoDB: Database page corruption on disk or a failed file read of tablespace test/t1 page");
|
||||
call mtr.add_suppression("InnoDB: We detected index corruption in an InnoDB type table");
|
||||
call mtr.add_suppression("Index for table 't1' is corrupt; try to repair it");
|
||||
--enable_query_log
|
||||
|
||||
--echo # Ensure that purge will not crash on the table after we corrupt it.
|
||||
|
@ -16,6 +16,7 @@ call mtr.add_suppression("InnoDB: Log scan aborted at LSN");
|
||||
call mtr.add_suppression("InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42\\r?$");
|
||||
call mtr.add_suppression("InnoDB: Obtaining redo log encryption key version 1 failed");
|
||||
call mtr.add_suppression("InnoDB: Decrypting checkpoint failed");
|
||||
call mtr.add_suppression("InnoDB: Are you sure you are using the right ib_logfiles to start up the database\\? Log sequence number in the ib_logfiles is 1213964,");
|
||||
--enable_query_log
|
||||
|
||||
let bugdir= $MYSQLTEST_VARDIR/tmp/log_corruption;
|
||||
@ -140,6 +141,24 @@ eval $check_no_innodb;
|
||||
let SEARCH_PATTERN=InnoDB: Upgrade after a crash is not supported. This redo log was created before MariaDB 10\\.2\\.2, and it appears corrupted;
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--echo # empty redo log from before MariaDB 10.2.2
|
||||
perl;
|
||||
die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
|
||||
binmode OUT;
|
||||
die unless seek(OUT, 0x800, 0);
|
||||
print OUT pack("NnnNx[496]N", 0x80000944, 12, 12, 0, 0xb2a);
|
||||
close OUT or die;
|
||||
EOF
|
||||
--let $restart_parameters= $dirs --innodb-force-recovery=5 --innodb-log-file-size=1m
|
||||
--source include/start_mysqld.inc
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
--source include/shutdown_mysqld.inc
|
||||
--let SEARCH_PATTERN= InnoDB: Upgrading redo log:
|
||||
--source include/search_pattern_in_file.inc
|
||||
--let $restart_parameters= $dirs
|
||||
|
||||
--echo # redo log from "after" MariaDB 10.2.2, but with invalid header checksum
|
||||
perl;
|
||||
die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
|
||||
@ -336,7 +355,7 @@ let SEARCH_PATTERN=InnoDB: MLOG_FILE_NAME incorrect:bigot;
|
||||
--let SEARCH_PATTERN= len 22; hex 38000000000012860cb7809781e800066269676f7400; asc 8 bigot ;
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--echo # missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
--echo # 10.2 missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
perl;
|
||||
die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
|
||||
binmode OUT;
|
||||
@ -364,27 +383,61 @@ EOF
|
||||
--source include/start_mysqld.inc
|
||||
eval $check_no_innodb;
|
||||
--source include/shutdown_mysqld.inc
|
||||
--let SEARCH_PATTERN= InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42\$
|
||||
--let SEARCH_PATTERN= InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--echo # Clean 10.2 redo log
|
||||
--echo # 10.3 missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT
|
||||
perl;
|
||||
die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
|
||||
binmode OUT;
|
||||
print OUT pack("Nx[5]nx[5]", 103, 0x1286), "MariaDB 10.3.1";
|
||||
print OUT pack("x[478]N", 0x85021a0f);
|
||||
close OUT or die;
|
||||
EOF
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
eval $check_no_innodb;
|
||||
--source include/shutdown_mysqld.inc
|
||||
--let SEARCH_PATTERN= InnoDB: Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT for tablespace 42
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--echo # Empty 10.3 redo log
|
||||
perl;
|
||||
die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
|
||||
binmode OUT;
|
||||
die unless seek(OUT, 0x800, 0);
|
||||
print OUT pack("H*", "800009440022000c00000001");
|
||||
# dummy padding (MLOG_DUMMY_RECORD)
|
||||
print OUT " " x 6;
|
||||
# MLOG_CHECKPOINT record
|
||||
print OUT pack("CNN", 56, 0, 0x12860c);
|
||||
# padding (MLOG_DUMMY_RECORD) and block checksum
|
||||
print OUT " " x 481, pack("N", 0xe9b21b7b);
|
||||
print OUT pack("NnnNx[496]N", 0x80000944, 12, 12, 1, 0x46c8a2a2);
|
||||
close OUT or die;
|
||||
EOF
|
||||
|
||||
--let $restart_parameters= $dirs --innodb-force-recovery=5 --innodb-log-file-size=1m
|
||||
--source include/start_mysqld.inc
|
||||
eval $check_no_innodb;
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
--source include/shutdown_mysqld.inc
|
||||
--let SEARCH_PATTERN= InnoDB: .* started; log sequence number 1213970
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
--echo # Empty 10.2 redo log
|
||||
perl;
|
||||
die unless open OUT, "+<", "$ENV{bugdir}/ib_logfile0";
|
||||
binmode OUT;
|
||||
# header block
|
||||
print OUT pack("Nx[5]nx[5]", 1, 0x1286);
|
||||
print OUT "ibbackup was here!!!1!";
|
||||
print OUT pack("x[470]N", 0x52b54540);
|
||||
# In encryption.innodb_log_corruption the previous step would
|
||||
# replace the block with an encrypted one. Rewrite it as it was.
|
||||
die unless seek(OUT, 0x800, 0);
|
||||
print OUT pack("NnnNx[496]N", 0x80000944, 12, 12, 1, 0x46c8a2a2);
|
||||
close OUT or die;
|
||||
EOF
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
SELECT COUNT(*) FROM INFORMATION_SCHEMA.ENGINES
|
||||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
--source include/shutdown_mysqld.inc
|
||||
--let SEARCH_PATTERN= InnoDB: Upgrading redo log:
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
6
mysql-test/suite/mariabackup/huge_lsn.opt
Normal file
6
mysql-test/suite/mariabackup/huge_lsn.opt
Normal file
@ -0,0 +1,6 @@
|
||||
--innodb-encrypt-log=ON
|
||||
--plugin-load-add=$FILE_KEY_MANAGEMENT_SO
|
||||
--loose-file-key-management
|
||||
--loose-file-key-management-filekey=FILE:$MTR_SUITE_DIR/filekeys-data.key
|
||||
--loose-file-key-management-filename=$MTR_SUITE_DIR/filekeys-data.enc
|
||||
--loose-file-key-management-encryption-algorithm=aes_cbc
|
@ -1,10 +1,11 @@
|
||||
#
|
||||
# MDEV-13416 mariabackup fails with EFAULT "Bad Address"
|
||||
#
|
||||
FOUND 1 /InnoDB: 5\.7\.\d+ started; log sequence number 17592186044428/ in mysqld.1.err
|
||||
FOUND 1 /InnoDB: New log files created, LSN=175964\d{8}/ in mysqld.1.err
|
||||
CREATE TABLE t(i INT) ENGINE INNODB;
|
||||
INSERT INTO t VALUES(1);
|
||||
# xtrabackup backup
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
INSERT INTO t VALUES(2);
|
||||
# xtrabackup prepare
|
||||
# shutdown server
|
||||
|
@ -1,4 +1,5 @@
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_file_key_management.inc
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13416 mariabackup fails with EFAULT "Bad Address"
|
||||
@ -16,7 +17,7 @@ binmode FILE;
|
||||
my $ps= $ENV{INNODB_PAGE_SIZE};
|
||||
my $page;
|
||||
die "Unable to read $file" unless sysread(FILE, $page, $ps) == $ps;
|
||||
substr($page,26,8) = pack("NN", 4096, 0);
|
||||
substr($page,26,8) = pack("NN", 4096, ~1024);
|
||||
substr($page,0,4)=pack("N",0xdeadbeef);
|
||||
substr($page,$ps-8,4)=pack("N",0xdeadbeef);
|
||||
sysseek(FILE, 0, 0) || die "Unable to rewind $file\n";
|
||||
@ -27,8 +28,9 @@ EOF
|
||||
--remove_files_wildcard $MYSQLD_DATADIR ib_logfile*
|
||||
|
||||
--source include/start_mysqld.inc
|
||||
let SEARCH_RANGE= -50000;
|
||||
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||
--let SEARCH_PATTERN= InnoDB: 5\.7\.\d+ started; log sequence number 17592186044428
|
||||
--let SEARCH_PATTERN= InnoDB: New log files created, LSN=175964\d{8}
|
||||
--source include/search_pattern_in_file.inc
|
||||
|
||||
CREATE TABLE t(i INT) ENGINE INNODB;
|
||||
@ -39,6 +41,7 @@ let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
|
||||
--disable_result_log
|
||||
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --backup --target-dir=$targetdir;
|
||||
--enable_result_log
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
INSERT INTO t VALUES(2);
|
||||
echo # xtrabackup prepare;
|
||||
--disable_result_log
|
||||
|
@ -482,6 +482,7 @@ select previous value for t1;
|
||||
previous value for t1
|
||||
1
|
||||
CREATE TEMPORARY SEQUENCE t1 start with 100 minvalue 100 maxvalue 200 increment by 1 cache 10 engine=innodb;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
select previous value for t1;
|
||||
previous value for t1
|
||||
NULL
|
||||
|
@ -362,6 +362,7 @@ CREATE SEQUENCE t1 start with 1 minvalue 1 maxvalue 10 increment by 1 cache 10 e
|
||||
select next value for t1;
|
||||
select previous value for t1;
|
||||
CREATE TEMPORARY SEQUENCE t1 start with 100 minvalue 100 maxvalue 200 increment by 1 cache 10 engine=innodb;
|
||||
START TRANSACTION WITH CONSISTENT SNAPSHOT;
|
||||
select previous value for t1;
|
||||
select next value for t1;
|
||||
select previous value for t1;
|
||||
|
@ -853,3 +853,32 @@ execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-14852: CTE using temporary table in query
|
||||
--echo # with two references to the CTE
|
||||
--echo #
|
||||
|
||||
create temporary table t1 (i int);
|
||||
insert into t1 values (5),(4),(1),(2),(3);
|
||||
|
||||
with
|
||||
c1 as (select i from t1),
|
||||
c2 as (select i from c1 where c1.i=2)
|
||||
select i from c1 where i > 3 union select i from c2;
|
||||
|
||||
drop table t1;
|
||||
|
||||
create table t1 (term char(10));
|
||||
create temporary table t2 (term char(10));
|
||||
|
||||
insert into t1 values ('TERM01'),('TERM02'),('TERM03');
|
||||
insert into t2 values ('TERM02'),('TERM03'),('TERM04');
|
||||
|
||||
with c1 as (select * from t1), c2 as (select * from t2)
|
||||
(select * from c1 left outer join c2 on c1.term = c2.term)
|
||||
union all
|
||||
(select * from c1 right outer join c2 on c1.term = c2.term
|
||||
where c1.term is null);
|
||||
|
||||
drop table t1,t2;
|
||||
|
@ -1999,6 +1999,93 @@ set @var=
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # mdev-14777: crash caused by the same as in mdev-14755
|
||||
--echo #
|
||||
|
||||
--source include/have_sequence.inc
|
||||
|
||||
CREATE TABLE t1 (i1 int NOT NULL, i2 int);
|
||||
CREATE TABLE t2 (d1 int NOT NULL PRIMARY KEY);
|
||||
CREATE TABLE t3 (i int );
|
||||
|
||||
insert into t1 select seq,seq from seq_1_to_100000;
|
||||
insert into t2 select seq from seq_1000_to_100000;
|
||||
insert into t3 select seq from seq_1_to_1000;
|
||||
|
||||
SELECT *
|
||||
FROM
|
||||
(
|
||||
SELECT *
|
||||
FROM
|
||||
(
|
||||
WITH RECURSIVE rt AS
|
||||
(
|
||||
SELECT i2 P, i1 C FROM t1 WHERE i1 IN (SELECT d1 FROM t2)
|
||||
UNION
|
||||
SELECT t1.i2 P, rt.C C FROM t1, rt
|
||||
)
|
||||
SELECT C,P
|
||||
FROM ( SELECT P,C FROM rt WHERE NOT EXISTS (SELECT 1 FROM t1) ) Y
|
||||
) X
|
||||
WHERE 1 = 1
|
||||
) K, t3;
|
||||
|
||||
drop table t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # mdev-14879: subquery with recursive reference in WHERE of CTE
|
||||
--echo #
|
||||
|
||||
create table flights
|
||||
(departure varchar(32),
|
||||
arrival varchar(32),
|
||||
carrier varchar(20),
|
||||
flight_number char(7));
|
||||
|
||||
insert into flights values
|
||||
('Seattle', 'Frankfurt', 'Lufthansa', 'LH 491'),
|
||||
('Seattle', 'Chicago', 'American', 'AA 2573'),
|
||||
('Seattle', 'Los Angeles', 'Alaska Air', 'AS 410'),
|
||||
('Chicago', 'New York', 'American', 'AA 375'),
|
||||
('Chicago', 'Montreal', 'Air Canada', 'AC 3053'),
|
||||
('Los Angeles', 'New York', 'Delta', 'DL 1197'),
|
||||
('Moscow', 'Tokyo', 'Aeroflot', 'SU 264'),
|
||||
('New York', 'Paris', 'Air France', 'AF 23'),
|
||||
('Frankfurt', 'Moscow', 'Lufthansa', 'LH 1444'),
|
||||
('Tokyo', 'Seattle', 'ANA', 'NH 178'),
|
||||
('Los Angeles', 'Tokyo', 'ANA', 'NH 175'),
|
||||
('Moscow', 'Los Angeles', 'Aeroflot', 'SU 106'),
|
||||
('Montreal', 'Paris', 'Air Canada', 'AC 870'),
|
||||
('Cairo', 'Paris', 'Air France', 'AF 503'),
|
||||
('New York', 'Seattle', 'American', 'AA 45'),
|
||||
('Paris', 'Chicago', 'Air France', 'AF 6734');
|
||||
|
||||
with recursive destinations (city) as
|
||||
( select a.arrival from flights a where a.departure='Cairo'
|
||||
union
|
||||
select b.arrival from destinations r, flights b where r.city=b.departure)
|
||||
select * from destinations;
|
||||
|
||||
set standard_compliant_cte=0;
|
||||
|
||||
let $q=
|
||||
with recursive destinations (city, legs) as
|
||||
(
|
||||
select a.arrival, 1 from flights a where a.departure='Cairo'
|
||||
union
|
||||
select b.arrival, r.legs + 1 from destinations r, flights b
|
||||
where r.city=b.departure and b.arrival not in (select city from destinations)
|
||||
)
|
||||
select * from destinations;
|
||||
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
set standard_compliant_cte=default;
|
||||
|
||||
drop table flights;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-14217 [db crash] Recursive CTE when SELECT includes new field
|
||||
--echo #
|
||||
|
@ -2140,6 +2140,31 @@ eval explain format=json $q;
|
||||
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-13454: consequence of mdev-14368 fixed for 5.5
|
||||
--echo #
|
||||
|
||||
SET sql_mode = 'ONLY_FULL_GROUP_BY';
|
||||
|
||||
create table t1 (id int, id2 int);
|
||||
insert into t1 values (1,1),(2,3),(3,4),(7,2);
|
||||
|
||||
create table t2(id2 int);
|
||||
insert t2 values (1),(2),(3);
|
||||
|
||||
let $q=
|
||||
SELECT * FROM t1
|
||||
LEFT OUTER JOIN
|
||||
(SELECT id2, COUNT(*) as ct FROM t2 GROUP BY id2) vc USING (id2)
|
||||
WHERE (vc.ct>0);
|
||||
|
||||
eval $q;
|
||||
eval EXPLAIN FORMAT=JSON $q;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
SET sql_mode = DEFAULT;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-10855: Pushdown into derived with window functions
|
||||
--echo #
|
||||
|
@ -6078,6 +6078,33 @@ SELECT (SELECT MAX(sq.f2) FROM t1) FROM (SELECT * FROM t2) AS sq WHERE f2 = 2;
|
||||
--echo #
|
||||
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 #
|
||||
|
@ -2662,7 +2662,8 @@ void advance_sj_state(JOIN *join, table_map remaining_tables, uint idx,
|
||||
LooseScan detector in best_access_path)
|
||||
*/
|
||||
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)
|
||||
dups_producing_tables= 0;
|
||||
@ -2673,7 +2674,7 @@ void advance_sj_state(JOIN *join, table_map remaining_tables, uint idx,
|
||||
if ((emb_sj_nest= new_join_tab->emb_sj_nest))
|
||||
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)
|
||||
{
|
||||
/* First table, initialize pickers */
|
||||
@ -2725,23 +2726,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.
|
||||
*/
|
||||
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)))
|
||||
{
|
||||
/* Mark strategy as used */
|
||||
(*strategy)->mark_used();
|
||||
pos->sj_strategy= sj_strategy;
|
||||
if (sj_strategy == SJ_OPT_MATERIALIZE)
|
||||
join->sjm_lookup_tables |= handled_fanout;
|
||||
DBUG_ASSERT(pos->sj_strategy != sj_strategy);
|
||||
/*
|
||||
If the strategy choosen first time or
|
||||
the strategy replace strategy which was used to exectly the same
|
||||
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
|
||||
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;
|
||||
{
|
||||
/* Conflict fall to most general variant */
|
||||
(*prev_strategy)->set_empty();
|
||||
dups_producing_tables= prev_dups_producing_tables;
|
||||
join->sjm_lookup_tables= prev_sjm_lookup_tables;
|
||||
// mark it 'none' to avpoid loops
|
||||
pos->sj_strategy= SJ_OPT_NONE;
|
||||
// next skip to last;
|
||||
strategy= pickers +
|
||||
(sizeof(pickers)/sizeof(Semi_join_strategy_picker*) - 3);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -833,12 +833,19 @@ st_select_lex_unit *With_element::clone_parsed_spec(THD *thd,
|
||||
parse_status= parse_sql(thd, &parser_state, 0);
|
||||
if (parse_status)
|
||||
goto err;
|
||||
|
||||
if (check_dependencies_in_with_clauses(lex->with_clauses_list))
|
||||
goto err;
|
||||
|
||||
spec_tables= lex->query_tables;
|
||||
spec_tables_tail= 0;
|
||||
for (TABLE_LIST *tbl= spec_tables;
|
||||
tbl;
|
||||
tbl= tbl->next_global)
|
||||
{
|
||||
if (!tbl->derived && !tbl->schema_table &&
|
||||
thd->open_temporary_table(tbl))
|
||||
goto err;
|
||||
spec_tables_tail= tbl;
|
||||
}
|
||||
if (check_table_access(thd, SELECT_ACL, spec_tables, FALSE, UINT_MAX, FALSE))
|
||||
|
@ -3268,6 +3268,9 @@ mysql_execute_command(THD *thd)
|
||||
thd->get_stmt_da()->opt_clear_warning_info(thd->query_id);
|
||||
}
|
||||
|
||||
if (check_dependencies_in_with_clauses(thd->lex->with_clauses_list))
|
||||
DBUG_RETURN(1);
|
||||
|
||||
#ifdef HAVE_REPLICATION
|
||||
if (unlikely(thd->slave_thread))
|
||||
{
|
||||
@ -3725,14 +3728,6 @@ mysql_execute_command(THD *thd)
|
||||
ulong privileges_requested= lex->exchange ? SELECT_ACL | FILE_ACL :
|
||||
SELECT_ACL;
|
||||
|
||||
/*
|
||||
The same function must be called for DML commands
|
||||
when CTEs are supported in DML statements
|
||||
*/
|
||||
res= check_dependencies_in_with_clauses(thd->lex->with_clauses_list);
|
||||
if (res)
|
||||
break;
|
||||
|
||||
if (all_tables)
|
||||
res= check_table_access(thd,
|
||||
privileges_requested,
|
||||
@ -4159,8 +4154,7 @@ mysql_execute_command(THD *thd)
|
||||
/* Copy temporarily the statement flags to thd for lock_table_names() */
|
||||
uint save_thd_create_info_options= thd->lex->create_info.options;
|
||||
thd->lex->create_info.options|= create_info.options;
|
||||
if (!(res= check_dependencies_in_with_clauses(lex->with_clauses_list)))
|
||||
res= open_and_lock_tables(thd, create_info, lex->query_tables, TRUE, 0);
|
||||
res= open_and_lock_tables(thd, create_info, lex->query_tables, TRUE, 0);
|
||||
thd->lex->create_info.options= save_thd_create_info_options;
|
||||
if (res)
|
||||
{
|
||||
@ -4773,8 +4767,7 @@ end_with_restore_list:
|
||||
|
||||
unit->set_limit(select_lex);
|
||||
|
||||
if (!(res= check_dependencies_in_with_clauses(lex->with_clauses_list)) &&
|
||||
!(res=open_and_lock_tables(thd, all_tables, TRUE, 0)))
|
||||
if (!(res=open_and_lock_tables(thd, all_tables, TRUE, 0)))
|
||||
{
|
||||
MYSQL_INSERT_SELECT_START(thd->query());
|
||||
/*
|
||||
@ -5105,9 +5098,6 @@ end_with_restore_list:
|
||||
{
|
||||
List<set_var_base> *lex_var_list= &lex->var_list;
|
||||
|
||||
if (check_dependencies_in_with_clauses(thd->lex->with_clauses_list))
|
||||
goto error;
|
||||
|
||||
if ((check_table_access(thd, SELECT_ACL, all_tables, FALSE, UINT_MAX, FALSE)
|
||||
|| open_and_lock_tables(thd, all_tables, TRUE, 0)))
|
||||
goto error;
|
||||
@ -6426,8 +6416,6 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
|
||||
new (thd->mem_root) Item_int(thd,
|
||||
(ulonglong) thd->variables.select_limit);
|
||||
}
|
||||
if (check_dependencies_in_with_clauses(lex->with_clauses_list))
|
||||
return 1;
|
||||
|
||||
if (!(res= open_and_lock_tables(thd, all_tables, TRUE, 0)))
|
||||
{
|
||||
|
@ -1516,8 +1516,6 @@ static int mysql_test_select(Prepared_statement *stmt,
|
||||
lex->select_lex.context.resolve_in_select_list= TRUE;
|
||||
|
||||
ulong privilege= lex->exchange ? SELECT_ACL | FILE_ACL : SELECT_ACL;
|
||||
if (check_dependencies_in_with_clauses(lex->with_clauses_list))
|
||||
goto error;
|
||||
if (tables)
|
||||
{
|
||||
if (check_table_access(thd, privilege, tables, FALSE, UINT_MAX, FALSE))
|
||||
@ -1784,9 +1782,6 @@ static bool mysql_test_create_table(Prepared_statement *stmt)
|
||||
if (create_table_precheck(thd, tables, create_table))
|
||||
DBUG_RETURN(TRUE);
|
||||
|
||||
if (check_dependencies_in_with_clauses(lex->with_clauses_list))
|
||||
DBUG_RETURN(TRUE);
|
||||
|
||||
if (select_lex->item_list.elements)
|
||||
{
|
||||
/* Base table and temporary table are not in the same name space. */
|
||||
@ -2177,9 +2172,6 @@ static bool mysql_test_insert_select(Prepared_statement *stmt,
|
||||
if (insert_precheck(stmt->thd, tables))
|
||||
return 1;
|
||||
|
||||
if (check_dependencies_in_with_clauses(lex->with_clauses_list))
|
||||
return 1;
|
||||
|
||||
/* store it, because mysql_insert_select_prepare_tester change it */
|
||||
first_local_table= lex->select_lex.table_list.first;
|
||||
DBUG_ASSERT(first_local_table != 0);
|
||||
@ -2282,6 +2274,9 @@ static bool check_prepared_statement(Prepared_statement *stmt)
|
||||
if (tables)
|
||||
thd->get_stmt_da()->opt_clear_warning_info(thd->query_id);
|
||||
|
||||
if (check_dependencies_in_with_clauses(thd->lex->with_clauses_list))
|
||||
goto error;
|
||||
|
||||
if (sql_command_flags[sql_command] & CF_HA_CLOSE)
|
||||
mysql_ha_rm_tables(thd, tables);
|
||||
|
||||
|
@ -17935,7 +17935,7 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
|
||||
table->in_use->inc_status_created_tmp_disk_tables();
|
||||
table->in_use->inc_status_created_tmp_tables();
|
||||
share->db_record_offset= 1;
|
||||
table->created= TRUE;
|
||||
table->set_created();
|
||||
DBUG_RETURN(0);
|
||||
err:
|
||||
DBUG_RETURN(1);
|
||||
@ -18440,8 +18440,8 @@ int rr_sequential_and_unpack(READ_RECORD *info)
|
||||
*/
|
||||
|
||||
bool instantiate_tmp_table(TABLE *table, KEY *keyinfo,
|
||||
MARIA_COLUMNDEF *start_recinfo,
|
||||
MARIA_COLUMNDEF **recinfo,
|
||||
TMP_ENGINE_COLUMNDEF *start_recinfo,
|
||||
TMP_ENGINE_COLUMNDEF **recinfo,
|
||||
ulonglong options)
|
||||
{
|
||||
if (table->s->db_type() == TMP_ENGINE_HTON)
|
||||
|
@ -2343,8 +2343,8 @@ bool create_internal_tmp_table(TABLE *table, KEY *keyinfo,
|
||||
TMP_ENGINE_COLUMNDEF **recinfo,
|
||||
ulonglong options);
|
||||
bool instantiate_tmp_table(TABLE *table, KEY *keyinfo,
|
||||
MARIA_COLUMNDEF *start_recinfo,
|
||||
MARIA_COLUMNDEF **recinfo,
|
||||
TMP_ENGINE_COLUMNDEF *start_recinfo,
|
||||
TMP_ENGINE_COLUMNDEF **recinfo,
|
||||
ulonglong options);
|
||||
bool open_tmp_table(TABLE *table);
|
||||
void setup_tmp_table_column_bitmaps(TABLE *table, uchar *bitmaps);
|
||||
|
@ -1709,6 +1709,7 @@ bool st_select_lex_unit::exec_recursive()
|
||||
sq;
|
||||
sq= sq->next_with_rec_ref)
|
||||
{
|
||||
sq->reset();
|
||||
sq->engine->force_reexecution();
|
||||
}
|
||||
|
||||
|
@ -4350,11 +4350,7 @@ loop:
|
||||
<< ". The most probable cause"
|
||||
" of this error may be that the"
|
||||
" table has been corrupted."
|
||||
" You can try to fix this"
|
||||
" problem by using"
|
||||
" innodb_force_recovery."
|
||||
" Please see " REFMAN " for more"
|
||||
" details. Aborting...";
|
||||
" See https://mariadb.com/kb/en/library/xtradbinnodb-recovery-modes/";
|
||||
}
|
||||
|
||||
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
Copyright (c) 2017, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
@ -80,6 +80,10 @@ static const ulint BUF_LRU_SEARCH_SCAN_THRESHOLD = 100;
|
||||
frames in the buffer pool, we set this to TRUE */
|
||||
static bool buf_lru_switched_on_innodb_mon = false;
|
||||
|
||||
/** True if diagnostic message about difficult to find free blocks
|
||||
in the buffer bool has already printed. */
|
||||
static bool buf_lru_free_blocks_error_printed;
|
||||
|
||||
/******************************************************************//**
|
||||
These statistics are not 'of' LRU but 'for' LRU. We keep count of I/O
|
||||
and page_zip_decompress() operations. Based on the statistics,
|
||||
@ -1079,8 +1083,6 @@ buf_LRU_get_free_block(
|
||||
bool freed = false;
|
||||
ulint n_iterations = 0;
|
||||
ulint flush_failures = 0;
|
||||
bool mon_value_was = false;
|
||||
bool started_monitor = false;
|
||||
|
||||
MONITOR_INC(MONITOR_LRU_GET_FREE_SEARCH);
|
||||
loop:
|
||||
@ -1088,6 +1090,11 @@ loop:
|
||||
|
||||
buf_LRU_check_size_of_non_data_objects(buf_pool);
|
||||
|
||||
DBUG_EXECUTE_IF("ib_lru_force_no_free_page",
|
||||
if (!buf_lru_free_blocks_error_printed) {
|
||||
n_iterations = 21;
|
||||
goto not_found;});
|
||||
|
||||
/* If there is a block in the free list, take it */
|
||||
block = buf_LRU_get_free_only(buf_pool);
|
||||
|
||||
@ -1097,11 +1104,6 @@ loop:
|
||||
ut_ad(buf_pool_from_block(block) == buf_pool);
|
||||
memset(&block->page.zip, 0, sizeof block->page.zip);
|
||||
|
||||
if (started_monitor) {
|
||||
srv_print_innodb_monitor =
|
||||
static_cast<my_bool>(mon_value_was);
|
||||
}
|
||||
|
||||
block->skip_flush_check = false;
|
||||
block->page.flush_observer = NULL;
|
||||
return(block);
|
||||
@ -1131,24 +1133,24 @@ loop:
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
not_found:
|
||||
#endif
|
||||
|
||||
buf_pool_mutex_exit(buf_pool);
|
||||
|
||||
if (freed) {
|
||||
goto loop;
|
||||
}
|
||||
|
||||
if (n_iterations > 20
|
||||
if (n_iterations > 20 && !buf_lru_free_blocks_error_printed
|
||||
&& srv_buf_pool_old_size == srv_buf_pool_size) {
|
||||
|
||||
ib::warn() << "Difficult to find free blocks in the buffer pool"
|
||||
" (" << n_iterations << " search iterations)! "
|
||||
<< flush_failures << " failed attempts to"
|
||||
" flush a page! Consider increasing the buffer pool"
|
||||
" size. It is also possible that in your Unix version"
|
||||
" fsync is very slow, or completely frozen inside"
|
||||
" the OS kernel. Then upgrading to a newer version"
|
||||
" of your operating system may help. Look at the"
|
||||
" number of fsyncs in diagnostic info below."
|
||||
" flush a page!"
|
||||
" Consider increasing innodb_buffer_pool_size."
|
||||
" Pending flushes (fsync) log: "
|
||||
<< fil_n_pending_log_flushes
|
||||
<< "; buffer pool: "
|
||||
@ -1156,13 +1158,9 @@ loop:
|
||||
<< ". " << os_n_file_reads << " OS file reads, "
|
||||
<< os_n_file_writes << " OS file writes, "
|
||||
<< os_n_fsyncs
|
||||
<< " OS fsyncs. Starting InnoDB Monitor to print"
|
||||
" further diagnostics to the standard output.";
|
||||
<< " OS fsyncs.";
|
||||
|
||||
mon_value_was = srv_print_innodb_monitor;
|
||||
started_monitor = true;
|
||||
srv_print_innodb_monitor = true;
|
||||
os_event_set(srv_monitor_event);
|
||||
buf_lru_free_blocks_error_printed = true;
|
||||
}
|
||||
|
||||
/* If we have scanned the whole LRU and still are unable to
|
||||
|
@ -3434,6 +3434,7 @@ dict_foreign_find_index(
|
||||
&& !(index->type & DICT_FTS)
|
||||
&& !dict_index_is_spatial(index)
|
||||
&& !index->to_be_dropped
|
||||
&& !dict_index_is_online_ddl(index)
|
||||
&& dict_foreign_qualify_index(
|
||||
table, col_names, columns, n_cols,
|
||||
index, types_idx,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
Copyright (c) 2017, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
@ -773,8 +773,9 @@ rtr_page_get_father_node_ptr(
|
||||
|
||||
error << ". You should dump + drop + reimport the table to"
|
||||
" fix the corruption. If the crash happens at"
|
||||
" database startup, see " REFMAN
|
||||
"forcing-innodb-recovery.html about forcing"
|
||||
" database startup, see "
|
||||
"https://mariadb.com/kb/en/library/xtradbinnodb-recovery-modes/"
|
||||
" about forcing"
|
||||
" recovery. Then dump + drop + reimport.";
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2013, 2017, MariaDB Corporation.
|
||||
Copyright (c) 2013, 2018, MariaDB Corporation.
|
||||
Copyright (c) 2008, 2009 Google Inc.
|
||||
Copyright (c) 2009, Percona Inc.
|
||||
Copyright (c) 2012, Facebook Inc.
|
||||
@ -21902,7 +21902,8 @@ const char* BUG_REPORT_MSG =
|
||||
"Submit a detailed bug report to https://jira.mariadb.org/";
|
||||
|
||||
const char* FORCE_RECOVERY_MSG =
|
||||
"Please refer to " REFMAN "forcing-innodb-recovery.html"
|
||||
"Please refer to "
|
||||
"https://mariadb.com/kb/en/library/xtradbinnodb-recovery-modes/"
|
||||
" for information about forcing recovery.";
|
||||
|
||||
const char* ERROR_CREATING_MSG =
|
||||
@ -21910,17 +21911,17 @@ const char* ERROR_CREATING_MSG =
|
||||
|
||||
const char* OPERATING_SYSTEM_ERROR_MSG =
|
||||
"Some operating system error numbers are described at"
|
||||
" " REFMAN "operating-system-error-codes.html";
|
||||
" https://mariadb.com/kb/en/library/operating-system-error-codes/";
|
||||
|
||||
const char* FOREIGN_KEY_CONSTRAINTS_MSG =
|
||||
"Please refer to " REFMAN "innodb-foreign-key-constraints.html"
|
||||
"Please refer to https://mariadb.com/kb/en/library/foreign-keys/"
|
||||
" for correct foreign key definition.";
|
||||
|
||||
const char* SET_TRANSACTION_MSG =
|
||||
"Please refer to " REFMAN "set-transaction.html";
|
||||
"Please refer to https://mariadb.com/kb/en/library/set-transaction/";
|
||||
|
||||
const char* INNODB_PARAMETERS_MSG =
|
||||
"Please refer to " REFMAN "innodb-parameters.html";
|
||||
"Please refer to https://mariadb.com/kb/en/library/xtradbinnodb-server-system-variables/";
|
||||
|
||||
/**********************************************************************
|
||||
Converts an identifier from my_charset_filename to UTF-8 charset.
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2009, Google Inc.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
Copyright (c) 2017, 2018, MariaDB Corporation.
|
||||
|
||||
Portions of this file contain modifications contributed and copyrighted by
|
||||
Google, Inc. Those modifications are gratefully acknowledged and are described
|
||||
@ -514,9 +514,11 @@ or the MySQL version that created the redo log file. */
|
||||
#define LOG_HEADER_FORMAT_3_23 0
|
||||
/** The MySQL 5.7.9/MariaDB 10.2.2 log format */
|
||||
#define LOG_HEADER_FORMAT_10_2 1
|
||||
/** The MariaDB 10.3.2 log format */
|
||||
#define LOG_HEADER_FORMAT_10_3 103
|
||||
/** The redo log format identifier corresponding to the current format version.
|
||||
Stored in LOG_HEADER_FORMAT. */
|
||||
#define LOG_HEADER_FORMAT_CURRENT 103
|
||||
#define LOG_HEADER_FORMAT_CURRENT LOG_HEADER_FORMAT_10_3
|
||||
/** Encrypted MariaDB redo log */
|
||||
#define LOG_HEADER_FORMAT_ENCRYPTED (1U<<31)
|
||||
|
||||
|
@ -842,7 +842,7 @@ recv_find_max_checkpoint_0(log_group_t** max_group, ulint* max_field)
|
||||
" This redo log was created before MariaDB 10.2.2,"
|
||||
" and we did not find a valid checkpoint."
|
||||
" Please follow the instructions at"
|
||||
" " REFMAN "upgrading.html";
|
||||
" https://mariadb.com/kb/en/library/upgrading/";
|
||||
return(DB_ERROR);
|
||||
}
|
||||
|
||||
@ -1159,6 +1159,8 @@ parse_log:
|
||||
redo log been written with something
|
||||
older than InnoDB Plugin 1.0.4. */
|
||||
ut_ad(0
|
||||
/* fil_crypt_rotate_page() writes this */
|
||||
|| offs == FIL_PAGE_SPACE_ID
|
||||
|| offs == IBUF_TREE_SEG_HEADER
|
||||
+ IBUF_HEADER + FSEG_HDR_SPACE
|
||||
|| offs == IBUF_TREE_SEG_HEADER
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
Copyright (c) 2017, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
@ -1030,6 +1030,7 @@ que_thr_step(
|
||||
} else if (type == QUE_NODE_SELECT) {
|
||||
thr = row_sel_step(thr);
|
||||
} else if (type == QUE_NODE_INSERT) {
|
||||
trx_start_if_not_started_xa(thr_get_trx(thr), true);
|
||||
thr = row_ins_step(thr);
|
||||
} else if (type == QUE_NODE_UPDATE) {
|
||||
trx_start_if_not_started_xa(thr_get_trx(thr), true);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
Copyright (c) 2017, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
@ -2484,8 +2484,6 @@ rec_get_trx_id(
|
||||
const rec_t* rec,
|
||||
const dict_index_t* index)
|
||||
{
|
||||
const page_t* page
|
||||
= page_align(rec);
|
||||
ulint trx_id_col
|
||||
= dict_index_get_sys_col_pos(index, DATA_TRX_ID);
|
||||
const byte* trx_id;
|
||||
@ -2496,11 +2494,7 @@ rec_get_trx_id(
|
||||
ulint* offsets = offsets_;
|
||||
|
||||
ut_ad(trx_id_col <= MAX_REF_PARTS);
|
||||
ut_ad(fil_page_index_page_check(page));
|
||||
ut_ad(mach_read_from_8(page + PAGE_HEADER + PAGE_INDEX_ID)
|
||||
== index->id);
|
||||
ut_ad(dict_index_is_clust(index));
|
||||
ut_ad(page_rec_is_leaf(rec));
|
||||
ut_ad(trx_id_col > 0);
|
||||
ut_ad(trx_id_col != ULINT_UNDEFINED);
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2016, 2017, MariaDB Corporation.
|
||||
Copyright (c) 2016, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
@ -3230,9 +3230,9 @@ row_ins_clust_index_entry(
|
||||
|
||||
n_uniq = dict_index_is_unique(index) ? index->n_uniq : 0;
|
||||
|
||||
const ulint flags = index->table->is_temporary()
|
||||
? BTR_NO_LOCKING_FLAG
|
||||
: index->table->no_rollback() ? BTR_NO_ROLLBACK : 0;
|
||||
const ulint flags = index->table->no_rollback() ? BTR_NO_ROLLBACK
|
||||
: dict_table_is_temporary(index->table)
|
||||
? BTR_NO_LOCKING_FLAG : 0;
|
||||
const ulint orig_n_fields = entry->n_fields;
|
||||
|
||||
/* Try first optimistic descent to the B-tree */
|
||||
@ -3348,7 +3348,7 @@ row_ins_index_entry(
|
||||
dtuple_t* entry, /*!< in/out: index entry to insert */
|
||||
que_thr_t* thr) /*!< in: query thread */
|
||||
{
|
||||
ut_ad(thr_get_trx(thr)->id != 0);
|
||||
ut_ad(thr_get_trx(thr)->id || index->table->no_rollback());
|
||||
|
||||
DBUG_EXECUTE_IF("row_ins_index_entry_timeout", {
|
||||
DBUG_SET("-d,row_ins_index_entry_timeout");
|
||||
@ -3808,8 +3808,6 @@ row_ins_step(
|
||||
|
||||
trx = thr_get_trx(thr);
|
||||
|
||||
trx_start_if_not_started_xa(trx, true);
|
||||
|
||||
node = static_cast<ins_node_t*>(thr->run_node);
|
||||
|
||||
ut_ad(que_node_get_type(node) == QUE_NODE_INSERT);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2015, 2017, MariaDB Corporation.
|
||||
Copyright (c) 2015, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
@ -1425,17 +1425,6 @@ row_insert_for_mysql(
|
||||
} else if (high_level_read_only) {
|
||||
return(DB_READ_ONLY);
|
||||
}
|
||||
DBUG_EXECUTE_IF("mark_table_corrupted", {
|
||||
/* Mark the table corrupted for the clustered index */
|
||||
dict_index_t* index = dict_table_get_first_index(table);
|
||||
ut_ad(dict_index_is_clust(index));
|
||||
dict_set_corrupted(index, trx, "INSERT TABLE"); });
|
||||
|
||||
if (dict_table_is_corrupted(table)) {
|
||||
|
||||
ib::error() << "Table " << table->name << " is corrupt.";
|
||||
return(DB_TABLE_CORRUPT);
|
||||
}
|
||||
|
||||
DBUG_EXECUTE_IF("mark_table_corrupted", {
|
||||
/* Mark the table corrupted for the clustered index */
|
||||
@ -1453,7 +1442,9 @@ row_insert_for_mysql(
|
||||
|
||||
row_mysql_delay_if_needed();
|
||||
|
||||
trx_start_if_not_started_xa(trx, true);
|
||||
if (!table->no_rollback()) {
|
||||
trx_start_if_not_started_xa(trx, true);
|
||||
}
|
||||
|
||||
row_get_prebuilt_insert_row(prebuilt);
|
||||
node = prebuilt->ins_node;
|
||||
|
@ -3,7 +3,7 @@
|
||||
Copyright (c) 1996, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2008, Google Inc.
|
||||
Copyright (c) 2009, Percona Inc.
|
||||
Copyright (c) 2013, 2017, MariaDB Corporation.
|
||||
Copyright (c) 2013, 2018, MariaDB Corporation.
|
||||
|
||||
Portions of this file contain modifications contributed and copyrighted by
|
||||
Google, Inc. Those modifications are gratefully acknowledged and are described
|
||||
|
@ -1151,28 +1151,6 @@ trx_purge_rseg_get_next_history_log(
|
||||
|
||||
mutex_exit(&(rseg->mutex));
|
||||
mtr_commit(&mtr);
|
||||
|
||||
trx_sys_mutex_enter();
|
||||
|
||||
/* 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) {
|
||||
ib::warn() << "Purge reached the head of the history"
|
||||
" list, but its length is still reported as "
|
||||
<< trx_sys->rseg_history_len << "! Make"
|
||||
" a detailed bug report, and submit it to"
|
||||
" https://jira.mariadb.org/";
|
||||
ut_ad(0);
|
||||
}
|
||||
|
||||
trx_sys_mutex_exit();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2017, MariaDB Corporation.
|
||||
Copyright (c) 2017, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free Software
|
||||
@ -53,7 +53,7 @@ ut_dbg_assertion_failed(
|
||||
" or crashes, even\n"
|
||||
"InnoDB: immediately after the mysqld startup, there may be\n"
|
||||
"InnoDB: corruption in the InnoDB tablespace. Please refer to\n"
|
||||
"InnoDB: " REFMAN "forcing-innodb-recovery.html\n"
|
||||
"InnoDB: https://mariadb.com/kb/en/library/xtradbinnodb-recovery-modes/\n"
|
||||
"InnoDB: about forcing recovery.\n", stderr);
|
||||
|
||||
fflush(stderr);
|
||||
|
@ -34,4 +34,5 @@ ADD_DEFINITIONS(-DDISABLE_MYSQL_THREAD_H)
|
||||
ADD_CONVENIENCE_LIBRARY(strings ${STRINGS_SOURCES})
|
||||
|
||||
ADD_EXECUTABLE(conf_to_src EXCLUDE_FROM_ALL conf_to_src.c)
|
||||
TARGET_LINK_LIBRARIES(conf_to_src strings)
|
||||
SET_TARGET_PROPERTIES(conf_to_src PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
|
||||
TARGET_LINK_LIBRARIES(conf_to_src mysys strings)
|
||||
|
@ -257,4 +257,9 @@ function addToResponseFile(filename, responseFile)
|
||||
responseFile.WriteLine("\""+fso.GetFile(filename).Path+"\"");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("file " + filename + " not found. Can't generate symbols file");
|
||||
WScript.Quit (1);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user