Merge branch '10.3' into 10.4
This commit is contained in:
commit
478b83032b
@ -5776,6 +5776,10 @@ static bool xtrabackup_prepare_func(char** argv)
|
|||||||
ut_ad(inc_dir_tables_hash);
|
ut_ad(inc_dir_tables_hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
msg("open files limit requested %u, set to %u",
|
||||||
|
(uint) xb_open_files_limit,
|
||||||
|
xb_set_max_open_files(xb_open_files_limit));
|
||||||
|
|
||||||
/* Fix DDL for prepare. Process .del,.ren, and .new files.
|
/* Fix DDL for prepare. Process .del,.ren, and .new files.
|
||||||
The order in which files are processed, is important
|
The order in which files are processed, is important
|
||||||
(see MDEV-18185, MDEV-18201)
|
(see MDEV-18185, MDEV-18201)
|
||||||
|
@ -158,7 +158,9 @@ typedef struct st_mysql_ftparser_boolean_info
|
|||||||
the word to MySQL full-text index. When parsing a search query,
|
the word to MySQL full-text index. When parsing a search query,
|
||||||
this function will add the new word to the list of words to search
|
this function will add the new word to the list of words to search
|
||||||
for. The boolean_info argument can be NULL for all cases except
|
for. The boolean_info argument can be NULL for all cases except
|
||||||
when mode is MYSQL_FTPARSER_FULL_BOOLEAN_INFO.
|
when mode is MYSQL_FTPARSER_FULL_BOOLEAN_INFO. A plugin can replace this
|
||||||
|
callback to post-process every parsed word before passing it to the original
|
||||||
|
mysql_add_word function.
|
||||||
|
|
||||||
ftparser_state: A generic pointer. The plugin can set it to point
|
ftparser_state: A generic pointer. The plugin can set it to point
|
||||||
to information to be used internally for its own purposes.
|
to information to be used internally for its own purposes.
|
||||||
|
@ -1587,7 +1587,7 @@ drop table t1;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # Check strnxfrm() with odd length
|
--echo # Check strnxfrm() with odd length
|
||||||
--echo #
|
--echo #
|
||||||
set max_sort_length=9;
|
set max_sort_length=65;
|
||||||
select @@max_sort_length;
|
select @@max_sort_length;
|
||||||
eval create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci) engine $engine;
|
eval create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci) engine $engine;
|
||||||
insert into t1 values ('a'),('b'),('c');
|
insert into t1 values ('a'),('b'),('c');
|
||||||
|
@ -4397,7 +4397,7 @@ with t as (select * from t1 where a <=3)
|
|||||||
select * from t;
|
select * from t;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` <= 3)select `t`.`a` AS `a` from `t` latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` <= 3)select `t`.`a` AS `a` from `t` latin1 latin1_swedish_ci
|
||||||
select * from v1;
|
select * from v1;
|
||||||
a
|
a
|
||||||
3
|
3
|
||||||
@ -4413,7 +4413,7 @@ order by a desc limit 3 )
|
|||||||
select a from t1 where a=4 union select a from t where a=7;
|
select a from t1 where a=4 union select a from t where a=7;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3 union select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3 order by `a` desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` < 3 union select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > 3 order by `a` desc limit 3)select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 latin1 latin1_swedish_ci
|
||||||
select * from v1;
|
select * from v1;
|
||||||
a
|
a
|
||||||
4
|
4
|
||||||
@ -4429,7 +4429,7 @@ order by a desc limit 3 )
|
|||||||
(select a from t1 where a=4 union select a from t where a=7 order by a desc);
|
(select a from t1 where a=4 union select a from t where a=7 order by a desc);
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as ((select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3) union (select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3) order by `a` desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as ((select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` < 3) union (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > 3) order by `a` desc limit 3)select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
|
||||||
select * from v1;
|
select * from v1;
|
||||||
a
|
a
|
||||||
7
|
7
|
||||||
@ -4469,7 +4469,7 @@ order by 1 desc limit 3 )
|
|||||||
select a from t1 where a=4 union select a from t where a=7 order by a desc;
|
select a from t1 where a=4 union select a from t where a=7 order by a desc;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(a) as (values (2),(1) union (values (4),(7)) order by 1 desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(a) as (values (2),(1) union (values (4),(7)) order by 1 desc limit 3)select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 4 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
|
||||||
select * from v1;
|
select * from v1;
|
||||||
a
|
a
|
||||||
7
|
7
|
||||||
@ -4484,7 +4484,7 @@ order by 1 desc limit 3 )
|
|||||||
select a from t1 where a=1 union select a from t where a=7 order by a desc;
|
select a from t1 where a=1 union select a from t where a=7 order by a desc;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(a) as ((values (2),(1)) union (values (4),(7) order by 1 desc) order by 1 desc limit 3)select `t1`.`a` AS `a` from `t1` where `t1`.`a` = 1 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t(a) as ((values (2),(1)) union (values (4),(7) order by 1 desc) order by 1 desc limit 3)select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 1 union select `t`.`a` AS `a` from `t` where `t`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
|
||||||
select * from v1;
|
select * from v1;
|
||||||
a
|
a
|
||||||
7
|
7
|
||||||
@ -4496,7 +4496,7 @@ s as (select * from t1 where a > 3)
|
|||||||
select a from t where a=1 union select a from s where a=7 order by a desc;
|
select a from t where a=1 union select a from s where a=7 order by a desc;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` < 3), s as (select `t1`.`a` AS `a` from `t1` where `t1`.`a` > 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 1 union select `s`.`a` AS `a` from `s` where `s`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` < 3), s as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` > 3)select `t`.`a` AS `a` from `t` where `t`.`a` = 1 union select `s`.`a` AS `a` from `s` where `s`.`a` = 7 order by `a` desc latin1 latin1_swedish_ci
|
||||||
select * from v1;
|
select * from v1;
|
||||||
a
|
a
|
||||||
7
|
7
|
||||||
|
@ -571,7 +571,7 @@ with t as (select a from t1 where b >= 'c')
|
|||||||
select * from t2,t where t2.c=t.a;
|
select * from t2,t where t2.c=t.a;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `t1`.`a` AS `a` from `t1` where `t1`.`b` >= 'c')select `t2`.`c` AS `c`,`t`.`a` AS `a` from (`t2` join `t`) where `t2`.`c` = `t`.`a` latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with t as (select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`b` >= 'c')select `test`.`t2`.`c` AS `c`,`t`.`a` AS `a` from (`test`.`t2` join `t`) where `test`.`t2`.`c` = `t`.`a` latin1 latin1_swedish_ci
|
||||||
select * from v1;
|
select * from v1;
|
||||||
c a
|
c a
|
||||||
4 4
|
4 4
|
||||||
@ -588,7 +588,7 @@ with t as (select a, count(*) from t1 where b >= 'c' group by a)
|
|||||||
select * from t2,t where t2.c=t.a;
|
select * from t2,t where t2.c=t.a;
|
||||||
show create view v2;
|
show create view v2;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with t as (select `t1`.`a` AS `a`,count(0) AS `count(*)` from `t1` where `t1`.`b` >= 'c' group by `t1`.`a`)select `t2`.`c` AS `c`,`t`.`a` AS `a`,`t`.`count(*)` AS `count(*)` from (`t2` join `t`) where `t2`.`c` = `t`.`a` latin1 latin1_swedish_ci
|
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with t as (select `test`.`t1`.`a` AS `a`,count(0) AS `count(*)` from `test`.`t1` where `test`.`t1`.`b` >= 'c' group by `test`.`t1`.`a`)select `test`.`t2`.`c` AS `c`,`t`.`a` AS `a`,`t`.`count(*)` AS `count(*)` from (`test`.`t2` join `t`) where `test`.`t2`.`c` = `t`.`a` latin1 latin1_swedish_ci
|
||||||
select * from v2;
|
select * from v2;
|
||||||
c a count(*)
|
c a count(*)
|
||||||
4 4 2
|
4 4 2
|
||||||
@ -606,7 +606,7 @@ with t(c) as (select a from t1 where b >= 'c')
|
|||||||
select * from t r1 where r1.c=4;
|
select * from t r1 where r1.c=4;
|
||||||
show create view v3;
|
show create view v3;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS with t(c) as (select `t1`.`a` AS `c` from `t1` where `t1`.`b` >= 'c')select `r1`.`c` AS `c` from `t` `r1` where `r1`.`c` = 4 latin1 latin1_swedish_ci
|
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS with t(c) as (select `test`.`t1`.`a` AS `c` from `test`.`t1` where `test`.`t1`.`b` >= 'c')select `r1`.`c` AS `c` from `t` `r1` where `r1`.`c` = 4 latin1 latin1_swedish_ci
|
||||||
select * from v3;
|
select * from v3;
|
||||||
c
|
c
|
||||||
4
|
4
|
||||||
@ -1349,7 +1349,7 @@ r.r_regionkey in
|
|||||||
select r_regionkey from t where r_name <> "ASIA");
|
select r_regionkey from t where r_name <> "ASIA");
|
||||||
show create view v;
|
show create view v;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `n`.`n_nationkey` AS `n_nationkey`,`n`.`n_name` AS `n_name`,`n`.`n_regionkey` AS `n_regionkey`,`r`.`r_regionkey` AS `r_regionkey`,`r`.`r_name` AS `r_name` from (`nation` `n` join `region` `r`) where `n`.`n_regionkey` = `r`.`r_regionkey` and `r`.`r_regionkey` in (with t as (select `region`.`r_regionkey` AS `r_regionkey`,`region`.`r_name` AS `r_name` from `region` where `region`.`r_regionkey` <= 3)select `t`.`r_regionkey` from `t` where `t`.`r_name` <> 'ASIA') latin1 latin1_swedish_ci
|
v CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v` AS select `n`.`n_nationkey` AS `n_nationkey`,`n`.`n_name` AS `n_name`,`n`.`n_regionkey` AS `n_regionkey`,`r`.`r_regionkey` AS `r_regionkey`,`r`.`r_name` AS `r_name` from (`test`.`nation` `n` join `test`.`region` `r`) where `n`.`n_regionkey` = `r`.`r_regionkey` and `r`.`r_regionkey` in (with t as (select `test`.`region`.`r_regionkey` AS `r_regionkey`,`test`.`region`.`r_name` AS `r_name` from `test`.`region` where `test`.`region`.`r_regionkey` <= 3)select `t`.`r_regionkey` from `t` where `t`.`r_name` <> 'ASIA') latin1 latin1_swedish_ci
|
||||||
select * from v;
|
select * from v;
|
||||||
n_nationkey n_name n_regionkey r_regionkey r_name
|
n_nationkey n_name n_regionkey r_regionkey r_name
|
||||||
0 ALGERIA 0 0 AFRICA
|
0 ALGERIA 0 0 AFRICA
|
||||||
@ -1690,6 +1690,41 @@ ERROR 3D000: No database selected
|
|||||||
DROP TABLE test.t;
|
DROP TABLE test.t;
|
||||||
connection default;
|
connection default;
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
|
#
|
||||||
|
# MDEV-22781: create view with CTE without default database
|
||||||
|
#
|
||||||
|
drop database test;
|
||||||
|
create database db1;
|
||||||
|
create table db1.t1 (a int);
|
||||||
|
insert into db1.t1 values (3),(7),(1);
|
||||||
|
create view db1.v1 as with t as (select * from db1.t1) select * from t;
|
||||||
|
show create view db1.v1;
|
||||||
|
View Create View character_set_client collation_connection
|
||||||
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `db1`.`v1` AS with t as (select `db1`.`t1`.`a` AS `a` from `db1`.`t1`)select `t`.`a` AS `a` from `t` latin1 latin1_swedish_ci
|
||||||
|
select * from db1.v1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
7
|
||||||
|
1
|
||||||
|
drop view db1.v1;
|
||||||
|
prepare stmt from "
|
||||||
|
create view db1.v1 as with t as (select * from db1.t1) select * from t;
|
||||||
|
";
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
show create view db1.v1;
|
||||||
|
View Create View character_set_client collation_connection
|
||||||
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `db1`.`v1` AS with t as (select `db1`.`t1`.`a` AS `a` from `db1`.`t1`)select `t`.`a` AS `a` from `t` latin1 latin1_swedish_ci
|
||||||
|
select * from db1.v1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
7
|
||||||
|
1
|
||||||
|
drop view db1.v1;
|
||||||
|
drop table db1.t1;
|
||||||
|
drop database db1;
|
||||||
|
create database test;
|
||||||
|
use test;
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
# MDEV-21673: several references to CTE that uses
|
# MDEV-21673: several references to CTE that uses
|
||||||
|
@ -1201,6 +1201,35 @@ DROP TABLE test.t;
|
|||||||
--connection default
|
--connection default
|
||||||
--disconnect con1
|
--disconnect con1
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-22781: create view with CTE without default database
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
drop database test;
|
||||||
|
create database db1;
|
||||||
|
create table db1.t1 (a int);
|
||||||
|
insert into db1.t1 values (3),(7),(1);
|
||||||
|
|
||||||
|
create view db1.v1 as with t as (select * from db1.t1) select * from t;
|
||||||
|
show create view db1.v1;
|
||||||
|
select * from db1.v1;
|
||||||
|
drop view db1.v1;
|
||||||
|
|
||||||
|
prepare stmt from "
|
||||||
|
create view db1.v1 as with t as (select * from db1.t1) select * from t;
|
||||||
|
";
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
show create view db1.v1;
|
||||||
|
select * from db1.v1;
|
||||||
|
drop view db1.v1;
|
||||||
|
|
||||||
|
drop table db1.t1;
|
||||||
|
drop database db1;
|
||||||
|
|
||||||
|
create database test;
|
||||||
|
use test;
|
||||||
|
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
48
mysql-test/main/cte_nonrecursive_not_embedded.result
Normal file
48
mysql-test/main/cte_nonrecursive_not_embedded.result
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#
|
||||||
|
# MDEV-20751: query using many CTEs with grant_tables enabled
|
||||||
|
#
|
||||||
|
connection default;
|
||||||
|
CREATE DATABASE db;
|
||||||
|
USE db;
|
||||||
|
CREATE TABLE t1 (a int) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (3), (7), (1);
|
||||||
|
CREATE TABLE t2 (a int) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t2 VALUES (2), (8), (4);
|
||||||
|
CREATE USER 'u1'@'localhost';
|
||||||
|
GRANT USAGE ON db.* TO 'u1'@'localhost';
|
||||||
|
GRANT SELECT ON db.t1 TO 'u1'@'localhost';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
connect u1,'localhost',u1,,;
|
||||||
|
connection u1;
|
||||||
|
USE db;
|
||||||
|
WITH
|
||||||
|
cte1 AS
|
||||||
|
(SELECT a FROM t1),
|
||||||
|
cte2 AS
|
||||||
|
(SELECT cte1.a FROM t1,cte1 WHERE cte1.a = t1.a),
|
||||||
|
cte3 AS
|
||||||
|
(SELECT cte2.a FROM t1,cte1,cte2 WHERE cte1.a = t1.a AND t1.a = cte2.a),
|
||||||
|
cte4 AS
|
||||||
|
(SELECT cte2.a FROM t1,cte2 WHERE cte2.a = t1.a)
|
||||||
|
SELECT * FROM cte4 as r;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
7
|
||||||
|
1
|
||||||
|
WITH
|
||||||
|
cte1 AS
|
||||||
|
(SELECT a FROM t2),
|
||||||
|
cte2 AS
|
||||||
|
(SELECT cte1.a FROM t2,cte1 WHERE cte1.a = t2.a),
|
||||||
|
cte3 AS
|
||||||
|
(SELECT cte2.a FROM t2,cte1,cte2 WHERE cte1.a = t2.a AND t2.a = cte2.a),
|
||||||
|
cte4 AS
|
||||||
|
(SELECT cte2.a FROM t2,cte2 WHERE cte2.a = t2.a)
|
||||||
|
SELECT * FROM cte4 as r;
|
||||||
|
ERROR 42000: SELECT command denied to user 'u1'@'localhost' for table 't2'
|
||||||
|
disconnect u1;
|
||||||
|
connection default;
|
||||||
|
DROP USER 'u1'@'localhost';
|
||||||
|
DROP DATABASE db;
|
||||||
|
USE test;
|
||||||
|
# End of 10.2 tests
|
58
mysql-test/main/cte_nonrecursive_not_embedded.test
Normal file
58
mysql-test/main/cte_nonrecursive_not_embedded.test
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
-- source include/not_embedded.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-20751: query using many CTEs with grant_tables enabled
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--connection default
|
||||||
|
|
||||||
|
CREATE DATABASE db;
|
||||||
|
USE db;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (3), (7), (1);
|
||||||
|
CREATE TABLE t2 (a int) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t2 VALUES (2), (8), (4);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE USER 'u1'@'localhost';
|
||||||
|
GRANT USAGE ON db.* TO 'u1'@'localhost';
|
||||||
|
GRANT SELECT ON db.t1 TO 'u1'@'localhost';
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
--connect (u1,'localhost',u1,,)
|
||||||
|
--connection u1
|
||||||
|
USE db;
|
||||||
|
|
||||||
|
WITH
|
||||||
|
cte1 AS
|
||||||
|
(SELECT a FROM t1),
|
||||||
|
cte2 AS
|
||||||
|
(SELECT cte1.a FROM t1,cte1 WHERE cte1.a = t1.a),
|
||||||
|
cte3 AS
|
||||||
|
(SELECT cte2.a FROM t1,cte1,cte2 WHERE cte1.a = t1.a AND t1.a = cte2.a),
|
||||||
|
cte4 AS
|
||||||
|
(SELECT cte2.a FROM t1,cte2 WHERE cte2.a = t1.a)
|
||||||
|
SELECT * FROM cte4 as r;
|
||||||
|
|
||||||
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
|
WITH
|
||||||
|
cte1 AS
|
||||||
|
(SELECT a FROM t2),
|
||||||
|
cte2 AS
|
||||||
|
(SELECT cte1.a FROM t2,cte1 WHERE cte1.a = t2.a),
|
||||||
|
cte3 AS
|
||||||
|
(SELECT cte2.a FROM t2,cte1,cte2 WHERE cte1.a = t2.a AND t2.a = cte2.a),
|
||||||
|
cte4 AS
|
||||||
|
(SELECT cte2.a FROM t2,cte2 WHERE cte2.a = t2.a)
|
||||||
|
SELECT * FROM cte4 as r;
|
||||||
|
|
||||||
|
--disconnect u1
|
||||||
|
--connection default
|
||||||
|
|
||||||
|
DROP USER 'u1'@'localhost';
|
||||||
|
DROP DATABASE db;
|
||||||
|
|
||||||
|
USE test;
|
||||||
|
|
||||||
|
--echo # End of 10.2 tests
|
@ -818,7 +818,7 @@ where p.id = a.father or p.id = a.mother
|
|||||||
select * from ancestors;
|
select * from ancestors;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with recursive ancestors as (select `folks`.`id` AS `id`,`folks`.`name` AS `name`,`folks`.`dob` AS `dob`,`folks`.`father` AS `father`,`folks`.`mother` AS `mother` from `folks` where `folks`.`name` = 'Me' and `folks`.`dob` = '2000-01-01' union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`folks` `p` join `ancestors` `a`) where `p`.`id` = `a`.`father` or `p`.`id` = `a`.`mother`)select `ancestors`.`id` AS `id`,`ancestors`.`name` AS `name`,`ancestors`.`dob` AS `dob`,`ancestors`.`father` AS `father`,`ancestors`.`mother` AS `mother` from `ancestors` latin1 latin1_swedish_ci
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS with recursive ancestors as (select `test`.`folks`.`id` AS `id`,`test`.`folks`.`name` AS `name`,`test`.`folks`.`dob` AS `dob`,`test`.`folks`.`father` AS `father`,`test`.`folks`.`mother` AS `mother` from `test`.`folks` where `test`.`folks`.`name` = 'Me' and `test`.`folks`.`dob` = '2000-01-01' union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`test`.`folks` `p` join `ancestors` `a`) where `p`.`id` = `a`.`father` or `p`.`id` = `a`.`mother`)select `ancestors`.`id` AS `id`,`ancestors`.`name` AS `name`,`ancestors`.`dob` AS `dob`,`ancestors`.`father` AS `father`,`ancestors`.`mother` AS `mother` from `ancestors` latin1 latin1_swedish_ci
|
||||||
select * from v1;
|
select * from v1;
|
||||||
id name dob father mother
|
id name dob father mother
|
||||||
100 Me 2000-01-01 20 30
|
100 Me 2000-01-01 20 30
|
||||||
@ -849,7 +849,7 @@ where p.id = ma.mother
|
|||||||
select * from ancestors;
|
select * from ancestors;
|
||||||
show create view v2;
|
show create view v2;
|
||||||
View Create View character_set_client collation_connection
|
View Create View character_set_client collation_connection
|
||||||
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with recursive ancestors as (select `folks`.`id` AS `id`,`folks`.`name` AS `name`,`folks`.`dob` AS `dob`,`folks`.`father` AS `father`,`folks`.`mother` AS `mother` from `folks` where `folks`.`name` = 'Me' union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`folks` `p` join `ancestors` `fa`) where `p`.`id` = `fa`.`father` union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`folks` `p` join `ancestors` `ma`) where `p`.`id` = `ma`.`mother`)select `ancestors`.`id` AS `id`,`ancestors`.`name` AS `name`,`ancestors`.`dob` AS `dob`,`ancestors`.`father` AS `father`,`ancestors`.`mother` AS `mother` from `ancestors` latin1 latin1_swedish_ci
|
v2 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v2` AS with recursive ancestors as (select `test`.`folks`.`id` AS `id`,`test`.`folks`.`name` AS `name`,`test`.`folks`.`dob` AS `dob`,`test`.`folks`.`father` AS `father`,`test`.`folks`.`mother` AS `mother` from `test`.`folks` where `test`.`folks`.`name` = 'Me' union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`test`.`folks` `p` join `ancestors` `fa`) where `p`.`id` = `fa`.`father` union select `p`.`id` AS `id`,`p`.`name` AS `name`,`p`.`dob` AS `dob`,`p`.`father` AS `father`,`p`.`mother` AS `mother` from (`test`.`folks` `p` join `ancestors` `ma`) where `p`.`id` = `ma`.`mother`)select `ancestors`.`id` AS `id`,`ancestors`.`name` AS `name`,`ancestors`.`dob` AS `dob`,`ancestors`.`father` AS `father`,`ancestors`.`mother` AS `mother` from `ancestors` latin1 latin1_swedish_ci
|
||||||
select * from v2;
|
select * from v2;
|
||||||
id name dob father mother
|
id name dob father mother
|
||||||
100 Me 2000-01-01 20 30
|
100 Me 2000-01-01 20 30
|
||||||
@ -4237,6 +4237,269 @@ a b c
|
|||||||
deallocate prepare stmt;
|
deallocate prepare stmt;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-24019: query with recursive CTE when no default database is set
|
||||||
|
#
|
||||||
|
drop database test;
|
||||||
|
with recursive a as
|
||||||
|
(select 1 from dual union select * from a as r)
|
||||||
|
select * from a;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
create database db1;
|
||||||
|
create table db1.t1 (a int);
|
||||||
|
insert into db1.t1 values (3), (7), (1);
|
||||||
|
with recursive cte as
|
||||||
|
(select * from db1.t1 union select * from (select * from cte) as t)
|
||||||
|
select * from cte;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
7
|
||||||
|
1
|
||||||
|
explain with recursive cte as
|
||||||
|
(select * from db1.t1 union select * from (select * from cte) as t)
|
||||||
|
select * from cte;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||||
|
2 DERIVED t1 ALL NULL NULL NULL NULL 3
|
||||||
|
3 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 3
|
||||||
|
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
|
||||||
|
prepare stmt from "with recursive cte as
|
||||||
|
(select * from db1.t1 union select * from (select * from cte) as t)
|
||||||
|
select * from cte";
|
||||||
|
execute stmt;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
7
|
||||||
|
1
|
||||||
|
execute stmt;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
7
|
||||||
|
1
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop database db1;
|
||||||
|
create database test;
|
||||||
|
use test;
|
||||||
|
#
|
||||||
|
# MDEV-23406: query with mutually recursive CTEs when big_tables=1
|
||||||
|
#
|
||||||
|
set @save_big_tables=@@big_tables;
|
||||||
|
set big_tables=1;
|
||||||
|
create table folks(id int, name char(32), dob date, father int, mother int);
|
||||||
|
insert into folks values
|
||||||
|
(100, 'Me', '2000-01-01', 20, 30),
|
||||||
|
(20, 'Dad', '1970-02-02', 10, 9),
|
||||||
|
(30, 'Mom', '1975-03-03', 8, 7),
|
||||||
|
(10, 'Grandpa Bill', '1940-04-05', null, null),
|
||||||
|
(9, 'Grandma Ann', '1941-10-15', null, null),
|
||||||
|
(25, 'Uncle Jim', '1968-11-18', 8, 7),
|
||||||
|
(98, 'Sister Amy', '2001-06-20', 20, 30),
|
||||||
|
(7, 'Grandma Sally', '1943-08-23', null, 6),
|
||||||
|
(8, 'Grandpa Ben', '1940-10-21', null, null),
|
||||||
|
(6, 'Grandgrandma Martha', '1923-05-17', null, null),
|
||||||
|
(67, 'Cousin Eddie', '1992-02-28', 25, 27),
|
||||||
|
(27, 'Auntie Melinda', '1971-03-29', null, null);
|
||||||
|
with recursive
|
||||||
|
ancestor_couples(h_id, h_name, h_dob, h_father, h_mother,
|
||||||
|
w_id, w_name, w_dob, w_father, w_mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h.*, w.*
|
||||||
|
from folks h, folks w, coupled_ancestors a
|
||||||
|
where a.father = h.id AND a.mother = w.id
|
||||||
|
union
|
||||||
|
select h.*, w.*
|
||||||
|
from folks v, folks h, folks w
|
||||||
|
where v.name = 'Me' and
|
||||||
|
(v.father = h.id AND v.mother= w.id)
|
||||||
|
),
|
||||||
|
coupled_ancestors (id, name, dob, father, mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h_id, h_name, h_dob, h_father, h_mother
|
||||||
|
from ancestor_couples
|
||||||
|
union
|
||||||
|
select w_id, w_name, w_dob, w_father, w_mother
|
||||||
|
from ancestor_couples
|
||||||
|
)
|
||||||
|
select h_name, h_dob, w_name, w_dob
|
||||||
|
from ancestor_couples;
|
||||||
|
h_name h_dob w_name w_dob
|
||||||
|
Dad 1970-02-02 Mom 1975-03-03
|
||||||
|
Grandpa Bill 1940-04-05 Grandma Ann 1941-10-15
|
||||||
|
Grandpa Ben 1940-10-21 Grandma Sally 1943-08-23
|
||||||
|
explain with recursive
|
||||||
|
ancestor_couples(h_id, h_name, h_dob, h_father, h_mother,
|
||||||
|
w_id, w_name, w_dob, w_father, w_mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h.*, w.*
|
||||||
|
from folks h, folks w, coupled_ancestors a
|
||||||
|
where a.father = h.id AND a.mother = w.id
|
||||||
|
union
|
||||||
|
select h.*, w.*
|
||||||
|
from folks v, folks h, folks w
|
||||||
|
where v.name = 'Me' and
|
||||||
|
(v.father = h.id AND v.mother= w.id)
|
||||||
|
),
|
||||||
|
coupled_ancestors (id, name, dob, father, mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h_id, h_name, h_dob, h_father, h_mother
|
||||||
|
from ancestor_couples
|
||||||
|
union
|
||||||
|
select w_id, w_name, w_dob, w_father, w_mother
|
||||||
|
from ancestor_couples
|
||||||
|
)
|
||||||
|
select h_name, h_dob, w_name, w_dob
|
||||||
|
from ancestor_couples;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 1728
|
||||||
|
4 DERIVED <derived3> ALL NULL NULL NULL NULL 1728
|
||||||
|
5 RECURSIVE UNION <derived3> ALL NULL NULL NULL NULL 1728
|
||||||
|
NULL UNION RESULT <union4,5> ALL NULL NULL NULL NULL NULL
|
||||||
|
3 DERIVED v ALL NULL NULL NULL NULL 12 Using where
|
||||||
|
3 DERIVED h ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
|
||||||
|
3 DERIVED w ALL NULL NULL NULL NULL 12 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
2 RECURSIVE UNION <derived4> ALL NULL NULL NULL NULL 2
|
||||||
|
2 RECURSIVE UNION h ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 RECURSIVE UNION w ALL NULL NULL NULL NULL 12 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
NULL UNION RESULT <union3,2> ALL NULL NULL NULL NULL NULL
|
||||||
|
prepare stmt from "with recursive
|
||||||
|
ancestor_couples(h_id, h_name, h_dob, h_father, h_mother,
|
||||||
|
w_id, w_name, w_dob, w_father, w_mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h.*, w.*
|
||||||
|
from folks h, folks w, coupled_ancestors a
|
||||||
|
where a.father = h.id AND a.mother = w.id
|
||||||
|
union
|
||||||
|
select h.*, w.*
|
||||||
|
from folks v, folks h, folks w
|
||||||
|
where v.name = 'Me' and
|
||||||
|
(v.father = h.id AND v.mother= w.id)
|
||||||
|
),
|
||||||
|
coupled_ancestors (id, name, dob, father, mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h_id, h_name, h_dob, h_father, h_mother
|
||||||
|
from ancestor_couples
|
||||||
|
union
|
||||||
|
select w_id, w_name, w_dob, w_father, w_mother
|
||||||
|
from ancestor_couples
|
||||||
|
)
|
||||||
|
select h_name, h_dob, w_name, w_dob
|
||||||
|
from ancestor_couples";
|
||||||
|
execute stmt;
|
||||||
|
h_name h_dob w_name w_dob
|
||||||
|
Dad 1970-02-02 Mom 1975-03-03
|
||||||
|
Grandpa Bill 1940-04-05 Grandma Ann 1941-10-15
|
||||||
|
Grandpa Ben 1940-10-21 Grandma Sally 1943-08-23
|
||||||
|
execute stmt;
|
||||||
|
h_name h_dob w_name w_dob
|
||||||
|
Dad 1970-02-02 Mom 1975-03-03
|
||||||
|
Grandpa Bill 1940-04-05 Grandma Ann 1941-10-15
|
||||||
|
Grandpa Ben 1940-10-21 Grandma Sally 1943-08-23
|
||||||
|
deallocate prepare stmt;
|
||||||
|
with recursive
|
||||||
|
ancestor_couples(h_id, h_name, h_dob, h_father, h_mother,
|
||||||
|
w_id, w_name, w_dob, w_father, w_mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h.*, w.*
|
||||||
|
from folks h, folks w, coupled_ancestors a
|
||||||
|
where a.father = h.id AND a.mother = w.id
|
||||||
|
),
|
||||||
|
coupled_ancestors (id, name, dob, father, mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select *
|
||||||
|
from folks
|
||||||
|
where name = 'Me'
|
||||||
|
union all
|
||||||
|
select h_id, h_name, h_dob, h_father, h_mother
|
||||||
|
from ancestor_couples
|
||||||
|
union all
|
||||||
|
select w_id, w_name, w_dob, w_father, w_mother
|
||||||
|
from ancestor_couples
|
||||||
|
)
|
||||||
|
select h_name, h_dob, w_name, w_dob
|
||||||
|
from ancestor_couples;
|
||||||
|
h_name h_dob w_name w_dob
|
||||||
|
Dad 1970-02-02 Mom 1975-03-03
|
||||||
|
Grandpa Bill 1940-04-05 Grandma Ann 1941-10-15
|
||||||
|
Grandpa Ben 1940-10-21 Grandma Sally 1943-08-23
|
||||||
|
explain with recursive
|
||||||
|
ancestor_couples(h_id, h_name, h_dob, h_father, h_mother,
|
||||||
|
w_id, w_name, w_dob, w_father, w_mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h.*, w.*
|
||||||
|
from folks h, folks w, coupled_ancestors a
|
||||||
|
where a.father = h.id AND a.mother = w.id
|
||||||
|
),
|
||||||
|
coupled_ancestors (id, name, dob, father, mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select *
|
||||||
|
from folks
|
||||||
|
where name = 'Me'
|
||||||
|
union all
|
||||||
|
select h_id, h_name, h_dob, h_father, h_mother
|
||||||
|
from ancestor_couples
|
||||||
|
union all
|
||||||
|
select w_id, w_name, w_dob, w_father, w_mother
|
||||||
|
from ancestor_couples
|
||||||
|
)
|
||||||
|
select h_name, h_dob, w_name, w_dob
|
||||||
|
from ancestor_couples;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
||||||
|
3 DERIVED folks ALL NULL NULL NULL NULL 12 Using where
|
||||||
|
4 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 2
|
||||||
|
5 RECURSIVE UNION <derived2> ALL NULL NULL NULL NULL 2
|
||||||
|
NULL UNION RESULT <union3,4,5> ALL NULL NULL NULL NULL NULL
|
||||||
|
2 DERIVED h ALL NULL NULL NULL NULL 12 Using where
|
||||||
|
2 DERIVED <derived3> ref key0 key0 5 test.h.id 2
|
||||||
|
2 DERIVED w ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
|
||||||
|
prepare stmt from "with recursive
|
||||||
|
ancestor_couples(h_id, h_name, h_dob, h_father, h_mother,
|
||||||
|
w_id, w_name, w_dob, w_father, w_mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h.*, w.*
|
||||||
|
from folks h, folks w, coupled_ancestors a
|
||||||
|
where a.father = h.id AND a.mother = w.id
|
||||||
|
),
|
||||||
|
coupled_ancestors (id, name, dob, father, mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select *
|
||||||
|
from folks
|
||||||
|
where name = 'Me'
|
||||||
|
union all
|
||||||
|
select h_id, h_name, h_dob, h_father, h_mother
|
||||||
|
from ancestor_couples
|
||||||
|
union all
|
||||||
|
select w_id, w_name, w_dob, w_father, w_mother
|
||||||
|
from ancestor_couples
|
||||||
|
)
|
||||||
|
select h_name, h_dob, w_name, w_dob
|
||||||
|
from ancestor_couples";
|
||||||
|
execute stmt;
|
||||||
|
h_name h_dob w_name w_dob
|
||||||
|
Dad 1970-02-02 Mom 1975-03-03
|
||||||
|
Grandpa Bill 1940-04-05 Grandma Ann 1941-10-15
|
||||||
|
Grandpa Ben 1940-10-21 Grandma Sally 1943-08-23
|
||||||
|
execute stmt;
|
||||||
|
h_name h_dob w_name w_dob
|
||||||
|
Dad 1970-02-02 Mom 1975-03-03
|
||||||
|
Grandpa Bill 1940-04-05 Grandma Ann 1941-10-15
|
||||||
|
Grandpa Ben 1940-10-21 Grandma Sally 1943-08-23
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table folks;
|
||||||
|
set big_tables=@save_big_tables;
|
||||||
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -2725,6 +2725,135 @@ deallocate prepare stmt;
|
|||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-24019: query with recursive CTE when no default database is set
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
drop database test;
|
||||||
|
|
||||||
|
let $q=
|
||||||
|
with recursive a as
|
||||||
|
(select 1 from dual union select * from a as r)
|
||||||
|
select * from a;
|
||||||
|
|
||||||
|
eval $q;
|
||||||
|
|
||||||
|
create database db1;
|
||||||
|
create table db1.t1 (a int);
|
||||||
|
insert into db1.t1 values (3), (7), (1);
|
||||||
|
|
||||||
|
let $q=
|
||||||
|
with recursive cte as
|
||||||
|
(select * from db1.t1 union select * from (select * from cte) as t)
|
||||||
|
select * from cte;
|
||||||
|
|
||||||
|
eval $q;
|
||||||
|
eval explain $q;
|
||||||
|
|
||||||
|
eval prepare stmt from "$q";
|
||||||
|
execute stmt;
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
|
||||||
|
drop database db1;
|
||||||
|
|
||||||
|
create database test;
|
||||||
|
use test;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-23406: query with mutually recursive CTEs when big_tables=1
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
set @save_big_tables=@@big_tables;
|
||||||
|
set big_tables=1;
|
||||||
|
|
||||||
|
create table folks(id int, name char(32), dob date, father int, mother int);
|
||||||
|
|
||||||
|
insert into folks values
|
||||||
|
(100, 'Me', '2000-01-01', 20, 30),
|
||||||
|
(20, 'Dad', '1970-02-02', 10, 9),
|
||||||
|
(30, 'Mom', '1975-03-03', 8, 7),
|
||||||
|
(10, 'Grandpa Bill', '1940-04-05', null, null),
|
||||||
|
(9, 'Grandma Ann', '1941-10-15', null, null),
|
||||||
|
(25, 'Uncle Jim', '1968-11-18', 8, 7),
|
||||||
|
(98, 'Sister Amy', '2001-06-20', 20, 30),
|
||||||
|
(7, 'Grandma Sally', '1943-08-23', null, 6),
|
||||||
|
(8, 'Grandpa Ben', '1940-10-21', null, null),
|
||||||
|
(6, 'Grandgrandma Martha', '1923-05-17', null, null),
|
||||||
|
(67, 'Cousin Eddie', '1992-02-28', 25, 27),
|
||||||
|
(27, 'Auntie Melinda', '1971-03-29', null, null);
|
||||||
|
|
||||||
|
let q=
|
||||||
|
with recursive
|
||||||
|
ancestor_couples(h_id, h_name, h_dob, h_father, h_mother,
|
||||||
|
w_id, w_name, w_dob, w_father, w_mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h.*, w.*
|
||||||
|
from folks h, folks w, coupled_ancestors a
|
||||||
|
where a.father = h.id AND a.mother = w.id
|
||||||
|
union
|
||||||
|
select h.*, w.*
|
||||||
|
from folks v, folks h, folks w
|
||||||
|
where v.name = 'Me' and
|
||||||
|
(v.father = h.id AND v.mother= w.id)
|
||||||
|
),
|
||||||
|
coupled_ancestors (id, name, dob, father, mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h_id, h_name, h_dob, h_father, h_mother
|
||||||
|
from ancestor_couples
|
||||||
|
union
|
||||||
|
select w_id, w_name, w_dob, w_father, w_mother
|
||||||
|
from ancestor_couples
|
||||||
|
)
|
||||||
|
select h_name, h_dob, w_name, w_dob
|
||||||
|
from ancestor_couples;
|
||||||
|
|
||||||
|
eval $q;
|
||||||
|
eval explain $q;
|
||||||
|
eval prepare stmt from "$q";
|
||||||
|
execute stmt;
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
|
||||||
|
let $q=
|
||||||
|
with recursive
|
||||||
|
ancestor_couples(h_id, h_name, h_dob, h_father, h_mother,
|
||||||
|
w_id, w_name, w_dob, w_father, w_mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select h.*, w.*
|
||||||
|
from folks h, folks w, coupled_ancestors a
|
||||||
|
where a.father = h.id AND a.mother = w.id
|
||||||
|
),
|
||||||
|
coupled_ancestors (id, name, dob, father, mother)
|
||||||
|
as
|
||||||
|
(
|
||||||
|
select *
|
||||||
|
from folks
|
||||||
|
where name = 'Me'
|
||||||
|
union all
|
||||||
|
select h_id, h_name, h_dob, h_father, h_mother
|
||||||
|
from ancestor_couples
|
||||||
|
union all
|
||||||
|
select w_id, w_name, w_dob, w_father, w_mother
|
||||||
|
from ancestor_couples
|
||||||
|
)
|
||||||
|
select h_name, h_dob, w_name, w_dob
|
||||||
|
from ancestor_couples;
|
||||||
|
|
||||||
|
eval $q;
|
||||||
|
eval explain $q;
|
||||||
|
eval prepare stmt from "$q";
|
||||||
|
execute stmt;
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
|
||||||
|
drop table folks;
|
||||||
|
|
||||||
|
set big_tables=@save_big_tables;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1492,6 +1492,8 @@ ab
|
|||||||
AE
|
AE
|
||||||
AE
|
AE
|
||||||
SET max_sort_length=8;
|
SET max_sort_length=8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_sort_length value: '8'
|
||||||
SELECT * FROM t1 ORDER BY s1;
|
SELECT * FROM t1 ORDER BY s1;
|
||||||
s1
|
s1
|
||||||
ab
|
ab
|
||||||
|
@ -1765,6 +1765,8 @@ ab
|
|||||||
AE
|
AE
|
||||||
AE
|
AE
|
||||||
SET max_sort_length=8;
|
SET max_sort_length=8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_sort_length value: '8'
|
||||||
SELECT * FROM t1 ORDER BY s1;
|
SELECT * FROM t1 ORDER BY s1;
|
||||||
s1
|
s1
|
||||||
ab
|
ab
|
||||||
|
@ -1505,6 +1505,8 @@ ab
|
|||||||
AE
|
AE
|
||||||
AE
|
AE
|
||||||
SET max_sort_length=8;
|
SET max_sort_length=8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_sort_length value: '8'
|
||||||
SELECT * FROM t1 ORDER BY s1;
|
SELECT * FROM t1 ORDER BY s1;
|
||||||
s1
|
s1
|
||||||
ab
|
ab
|
||||||
|
@ -6757,9 +6757,11 @@ DFFFDFFF9CFF9DFF9EFF
|
|||||||
# Checking strnxfrm() with odd length
|
# Checking strnxfrm() with odd length
|
||||||
#
|
#
|
||||||
set max_sort_length=9;
|
set max_sort_length=9;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_sort_length value: '9'
|
||||||
select @@max_sort_length;
|
select @@max_sort_length;
|
||||||
@@max_sort_length
|
@@max_sort_length
|
||||||
9
|
64
|
||||||
create table t1 (a varchar(128) character set utf8 collate utf8_general_ci);
|
create table t1 (a varchar(128) character set utf8 collate utf8_general_ci);
|
||||||
insert into t1 values ('a'),('b'),('c');
|
insert into t1 values ('a'),('b'),('c');
|
||||||
select * from t1 order by a;
|
select * from t1 order by a;
|
||||||
|
@ -2371,10 +2371,10 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
# Check strnxfrm() with odd length
|
# Check strnxfrm() with odd length
|
||||||
#
|
#
|
||||||
set max_sort_length=9;
|
set max_sort_length=65;
|
||||||
select @@max_sort_length;
|
select @@max_sort_length;
|
||||||
@@max_sort_length
|
@@max_sort_length
|
||||||
9
|
65
|
||||||
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci);
|
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci);
|
||||||
insert into t1 values ('a'),('b'),('c');
|
insert into t1 values ('a'),('b'),('c');
|
||||||
select * from t1 order by a;
|
select * from t1 order by a;
|
||||||
|
@ -1520,7 +1520,7 @@ drop table t1;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # Check strnxfrm() with odd length
|
--echo # Check strnxfrm() with odd length
|
||||||
--echo #
|
--echo #
|
||||||
set max_sort_length=9;
|
set max_sort_length=65;
|
||||||
select @@max_sort_length;
|
select @@max_sort_length;
|
||||||
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci);
|
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci);
|
||||||
insert into t1 values ('a'),('b'),('c');
|
insert into t1 values ('a'),('b'),('c');
|
||||||
|
@ -2203,10 +2203,10 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
# Check strnxfrm() with odd length
|
# Check strnxfrm() with odd length
|
||||||
#
|
#
|
||||||
set max_sort_length=9;
|
set max_sort_length=65;
|
||||||
select @@max_sort_length;
|
select @@max_sort_length;
|
||||||
@@max_sort_length
|
@@max_sort_length
|
||||||
9
|
65
|
||||||
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci) engine heap;
|
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci) engine heap;
|
||||||
insert into t1 values ('a'),('b'),('c');
|
insert into t1 values ('a'),('b'),('c');
|
||||||
select * from t1 order by a;
|
select * from t1 order by a;
|
||||||
|
@ -2329,10 +2329,10 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
# Check strnxfrm() with odd length
|
# Check strnxfrm() with odd length
|
||||||
#
|
#
|
||||||
set max_sort_length=9;
|
set max_sort_length=65;
|
||||||
select @@max_sort_length;
|
select @@max_sort_length;
|
||||||
@@max_sort_length
|
@@max_sort_length
|
||||||
9
|
65
|
||||||
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci) engine InnoDB;
|
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci) engine InnoDB;
|
||||||
insert into t1 values ('a'),('b'),('c');
|
insert into t1 values ('a'),('b'),('c');
|
||||||
select * from t1 order by a;
|
select * from t1 order by a;
|
||||||
|
@ -2336,10 +2336,10 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
# Check strnxfrm() with odd length
|
# Check strnxfrm() with odd length
|
||||||
#
|
#
|
||||||
set max_sort_length=9;
|
set max_sort_length=65;
|
||||||
select @@max_sort_length;
|
select @@max_sort_length;
|
||||||
@@max_sort_length
|
@@max_sort_length
|
||||||
9
|
65
|
||||||
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci) engine MyISAM;
|
create table t1 (a varchar(128) character set utf8mb4 collate utf8mb4_general_ci) engine MyISAM;
|
||||||
insert into t1 values ('a'),('b'),('c');
|
insert into t1 values ('a'),('b'),('c');
|
||||||
select * from t1 order by a;
|
select * from t1 order by a;
|
||||||
|
@ -1280,6 +1280,18 @@ Name_exp_1
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-4677 GROUP_CONCAT not showing any output with group_concat_max_len >= 4Gb
|
||||||
|
#
|
||||||
|
set group_concat_max_len=1024*1024*1024*4;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect group_concat_max_len value: '4294967296'
|
||||||
|
create table t1 (i int, j int);
|
||||||
|
insert into t1 values (1,1),(1,2);
|
||||||
|
select i, group_concat(j) from t1 group by i;
|
||||||
|
i group_concat(j)
|
||||||
|
1 1,2
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -939,6 +939,16 @@ DROP VIEW v1;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-4677 GROUP_CONCAT not showing any output with group_concat_max_len >= 4Gb
|
||||||
|
--echo #
|
||||||
|
set group_concat_max_len=1024*1024*1024*4;
|
||||||
|
create table t1 (i int, j int);
|
||||||
|
insert into t1 values (1,1),(1,2);
|
||||||
|
select i, group_concat(j) from t1 group by i;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -289,6 +289,24 @@ a b c d
|
|||||||
3 f_ 1 0 1
|
3 f_ 1 0 1
|
||||||
3 f\_ 0 1 0
|
3 f\_ 0 1 0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (f int);
|
||||||
|
insert t1 values (1),(2);
|
||||||
|
select 1 from (select distinct * from t1) as x where f < (select 1 like 2 escape (3=1));
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
create table t1(f1 int);
|
||||||
|
insert into t1 values(1);
|
||||||
|
update (select 1 like 2 escape (1 in (select 1 from t1))) x, t1 as d set d.f1 = 1;
|
||||||
|
ERROR HY000: Incorrect arguments to ESCAPE
|
||||||
|
select * from (select 1 like 2 escape (1 in (select 1 from t1))) x;
|
||||||
|
1 like 2 escape (1 in (select 1 from t1))
|
||||||
|
0
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (f int);
|
||||||
|
insert t1 values (1),(2);
|
||||||
|
create view v1 as select * from t1 where (1 like 2 escape (3 in (('h', 'b') in (select 'k', 'k' union select 'g', 'j'))) and f >= 0);
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
#
|
#
|
||||||
# MDEV-17359 - Extend expression supported by like (| & << >> || + - * / DIV MOD ^ )
|
# MDEV-17359 - Extend expression supported by like (| & << >> || + - * / DIV MOD ^ )
|
||||||
#
|
#
|
||||||
|
@ -187,7 +187,7 @@ DROP TABLE t1;
|
|||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
#
|
#
|
||||||
# Item_func_line::print()
|
# Item_func_like::print()
|
||||||
#
|
#
|
||||||
create view v1 as select 'foo!' like 'foo!!', 'foo!' like 'foo!!' escape '!';
|
create view v1 as select 'foo!' like 'foo!!', 'foo!' like 'foo!!' escape '!';
|
||||||
show create view v1;
|
show create view v1;
|
||||||
@ -208,6 +208,33 @@ set sql_mode=default;
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Item_func_like::fix_fields()
|
||||||
|
#
|
||||||
|
create table t1 (f int);
|
||||||
|
insert t1 values (1),(2);
|
||||||
|
select 1 from (select distinct * from t1) as x where f < (select 1 like 2 escape (3=1));
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Item_func_like::fix_fields, ESCAPE, const_item()
|
||||||
|
#
|
||||||
|
create table t1(f1 int);
|
||||||
|
insert into t1 values(1);
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
update (select 1 like 2 escape (1 in (select 1 from t1))) x, t1 as d set d.f1 = 1;
|
||||||
|
select * from (select 1 like 2 escape (1 in (select 1 from t1))) x;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Item_func_like::walk
|
||||||
|
#
|
||||||
|
create table t1 (f int);
|
||||||
|
insert t1 values (1),(2);
|
||||||
|
create view v1 as select * from t1 where (1 like 2 escape (3 in (('h', 'b') in (select 'k', 'k' union select 'g', 'j'))) and f >= 0);
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-17359 - Extend expression supported by like (| & << >> || + - * / DIV MOD ^ )
|
--echo # MDEV-17359 - Extend expression supported by like (| & << >> || + - * / DIV MOD ^ )
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -863,6 +863,7 @@ where data_type = 'longtext' and table_schema != 'performance_schema'
|
|||||||
order by binary table_name, ordinal_position;
|
order by binary table_name, ordinal_position;
|
||||||
table_schema table_name column_name
|
table_schema table_name column_name
|
||||||
information_schema ALL_PLUGINS PLUGIN_DESCRIPTION
|
information_schema ALL_PLUGINS PLUGIN_DESCRIPTION
|
||||||
|
information_schema CHECK_CONSTRAINTS CHECK_CLAUSE
|
||||||
information_schema COLUMNS COLUMN_DEFAULT
|
information_schema COLUMNS COLUMN_DEFAULT
|
||||||
information_schema COLUMNS COLUMN_TYPE
|
information_schema COLUMNS COLUMN_TYPE
|
||||||
information_schema COLUMNS GENERATION_EXPRESSION
|
information_schema COLUMNS GENERATION_EXPRESSION
|
||||||
@ -2222,17 +2223,10 @@ SCHEMA_NAME
|
|||||||
# MDEV-14836: Assertion `m_status == DA_ERROR' failed in
|
# MDEV-14836: Assertion `m_status == DA_ERROR' failed in
|
||||||
# Diagnostics_area::sql_errno upon query from I_S with LIMIT ROWS EXAMINED
|
# Diagnostics_area::sql_errno upon query from I_S with LIMIT ROWS EXAMINED
|
||||||
#
|
#
|
||||||
SELECT * FROM seq_1_to_100 LIMIT ROWS EXAMINED 10;
|
SELECT * FROM INFORMATION_SCHEMA.`COLUMNS` LIMIT ROWS EXAMINED 10;
|
||||||
seq
|
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT IS_GENERATED GENERATION_EXPRESSION
|
||||||
1
|
|
||||||
2
|
|
||||||
3
|
|
||||||
4
|
|
||||||
5
|
|
||||||
6
|
|
||||||
7
|
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1931 Query execution was interrupted. The query examined at least 11 rows, which exceeds LIMIT ROWS EXAMINED (10). The query result may be incomplete
|
Warning 1931 Query execution was interrupted. The query examined at least ### rows, which exceeds LIMIT ROWS EXAMINED (10). The query result may be incomplete
|
||||||
#
|
#
|
||||||
# End of 10.2 Test
|
# End of 10.2 Test
|
||||||
#
|
#
|
||||||
|
@ -1931,7 +1931,8 @@ SELECT SCHEMA_NAME from information_schema.schemata where schema_name=REPEAT('a'
|
|||||||
--echo # Diagnostics_area::sql_errno upon query from I_S with LIMIT ROWS EXAMINED
|
--echo # Diagnostics_area::sql_errno upon query from I_S with LIMIT ROWS EXAMINED
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
SELECT * FROM seq_1_to_100 LIMIT ROWS EXAMINED 10;
|
replace_regex /at least \d+ rows/at least ### rows/;
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.`COLUMNS` LIMIT ROWS EXAMINED 10;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 Test
|
--echo # End of 10.2 Test
|
||||||
|
@ -229,3 +229,37 @@ drop user definer@localhost;
|
|||||||
drop database mysqltest1;
|
drop database mysqltest1;
|
||||||
drop database mysqltest2;
|
drop database mysqltest2;
|
||||||
drop database mysqltest3;
|
drop database mysqltest3;
|
||||||
|
#
|
||||||
|
# MDEV-24331 mysqldump fails with "Got error: 1356" if the database contains a view with a subquery
|
||||||
|
#
|
||||||
|
create user u1@localhost;
|
||||||
|
grant all privileges on test.* to u1@localhost;
|
||||||
|
connect con1,localhost,u1;
|
||||||
|
use test;
|
||||||
|
create table t1 (id int not null);
|
||||||
|
create view v1 as select * from (select * from t1) dt;
|
||||||
|
lock table v1 read;
|
||||||
|
disconnect con1;
|
||||||
|
connection default;
|
||||||
|
SET @saved_cs_client = @@character_set_client;
|
||||||
|
SET character_set_client = utf8;
|
||||||
|
/*!50001 CREATE TABLE `v1` (
|
||||||
|
`id` tinyint NOT NULL
|
||||||
|
) ENGINE=MyISAM */;
|
||||||
|
SET character_set_client = @saved_cs_client;
|
||||||
|
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
||||||
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
|
/*!50001 SET character_set_client = latin1 */;
|
||||||
|
/*!50001 SET character_set_results = latin1 */;
|
||||||
|
/*!50001 SET collation_connection = latin1_swedish_ci */;
|
||||||
|
/*!50001 CREATE ALGORITHM=UNDEFINED */
|
||||||
|
/*!50013 DEFINER=`u1`@`localhost` SQL SECURITY DEFINER */
|
||||||
|
/*!50001 VIEW `v1` AS select `dt`.`id` AS `id` from (select `test`.`t1`.`id` AS `id` from `test`.`t1`) `dt` */;
|
||||||
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
drop user u1@localhost;
|
||||||
|
@ -75,3 +75,20 @@ drop user definer@localhost;
|
|||||||
drop database mysqltest1;
|
drop database mysqltest1;
|
||||||
drop database mysqltest2;
|
drop database mysqltest2;
|
||||||
drop database mysqltest3;
|
drop database mysqltest3;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-24331 mysqldump fails with "Got error: 1356" if the database contains a view with a subquery
|
||||||
|
--echo #
|
||||||
|
create user u1@localhost;
|
||||||
|
grant all privileges on test.* to u1@localhost;
|
||||||
|
connect con1,localhost,u1;
|
||||||
|
use test;
|
||||||
|
create table t1 (id int not null);
|
||||||
|
create view v1 as select * from (select * from t1) dt;
|
||||||
|
lock table v1 read;
|
||||||
|
disconnect con1;
|
||||||
|
connection default;
|
||||||
|
exec $MYSQL_DUMP test v1 -uu1 --compact;
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
drop user u1@localhost;
|
||||||
|
@ -484,8 +484,6 @@ even_longer_user_name_number_3_to_test_the_grantor_and_definer_field_length@loca
|
|||||||
DROP USER very_long_user_name_number_1, very_long_user_name_number_2, even_longer_user_name_number_3_to_test_the_grantor_and_definer_field_length@localhost;
|
DROP USER very_long_user_name_number_1, very_long_user_name_number_2, even_longer_user_name_number_3_to_test_the_grantor_and_definer_field_length@localhost;
|
||||||
DROP PROCEDURE test.pr;
|
DROP PROCEDURE test.pr;
|
||||||
use test;
|
use test;
|
||||||
call mtr.add_suppression('Column last_update in table `mysql`.`innodb_table_stats` is INT NOT NULL but should be');
|
|
||||||
alter table mysql.innodb_table_stats modify last_update int not null;
|
|
||||||
create table extralongname_extralongname_extralongname_extralongname_ext (
|
create table extralongname_extralongname_extralongname_extralongname_ext (
|
||||||
id int(10) unsigned not null,
|
id int(10) unsigned not null,
|
||||||
created_date date not null,
|
created_date date not null,
|
||||||
|
@ -172,8 +172,6 @@ DROP PROCEDURE test.pr;
|
|||||||
# MDEV-13274 mysql_upgrade fails if dbname+tablename+partioname > 64 chars
|
# MDEV-13274 mysql_upgrade fails if dbname+tablename+partioname > 64 chars
|
||||||
#
|
#
|
||||||
use test;
|
use test;
|
||||||
call mtr.add_suppression('Column last_update in table `mysql`.`innodb_table_stats` is INT NOT NULL but should be');
|
|
||||||
alter table mysql.innodb_table_stats modify last_update int not null;
|
|
||||||
|
|
||||||
create table extralongname_extralongname_extralongname_extralongname_ext (
|
create table extralongname_extralongname_extralongname_extralongname_ext (
|
||||||
id int(10) unsigned not null,
|
id int(10) unsigned not null,
|
||||||
|
@ -845,18 +845,20 @@ col2 col col
|
|||||||
2 2 2
|
2 2 2
|
||||||
1 3 3
|
1 3 3
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
create table t1 (a char(25));
|
create table t1 (a char(70));
|
||||||
insert into t1 set a = repeat('x', 20);
|
insert into t1 set a = repeat('x', 20);
|
||||||
insert into t1 set a = concat(repeat('x', 19), 'z');
|
insert into t1 set a = concat(repeat('x', 63), 'z');
|
||||||
insert into t1 set a = concat(repeat('x', 19), 'ab');
|
insert into t1 set a = concat(repeat('x', 63), 'ab');
|
||||||
insert into t1 set a = concat(repeat('x', 19), 'aa');
|
insert into t1 set a = concat(repeat('x', 63), 'aa');
|
||||||
set max_sort_length=20;
|
set max_sort_length=20;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_sort_length value: '20'
|
||||||
select a from t1 order by a;
|
select a from t1 order by a;
|
||||||
a
|
a
|
||||||
xxxxxxxxxxxxxxxxxxxab
|
|
||||||
xxxxxxxxxxxxxxxxxxxaa
|
|
||||||
xxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxz
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxab
|
||||||
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaa
|
||||||
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (
|
create table t1 (
|
||||||
`sid` decimal(8,0) default null,
|
`sid` decimal(8,0) default null,
|
||||||
@ -3317,6 +3319,8 @@ drop table t1;
|
|||||||
SET @save_sort_buffer_size= @@sort_buffer_size;
|
SET @save_sort_buffer_size= @@sort_buffer_size;
|
||||||
SET @save_max_sort_length= @@max_sort_length;
|
SET @save_max_sort_length= @@max_sort_length;
|
||||||
SET max_sort_length=8;
|
SET max_sort_length=8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_sort_length value: '8'
|
||||||
SET sort_buffer_size=1024;
|
SET sort_buffer_size=1024;
|
||||||
CREATE TABLE t1(a INT, b DECIMAL(65), c BLOB);
|
CREATE TABLE t1(a INT, b DECIMAL(65), c BLOB);
|
||||||
INSERT INTO t1 SELECT seq, seq, seq from seq_1_to_25;
|
INSERT INTO t1 SELECT seq, seq, seq from seq_1_to_25;
|
||||||
@ -3384,6 +3388,8 @@ SET @save_max_sort_length= @@max_sort_length;
|
|||||||
SET @save_sort_buffer_size= @@sort_buffer_size;
|
SET @save_sort_buffer_size= @@sort_buffer_size;
|
||||||
SET @save_max_length_for_sort_data= @@max_length_for_sort_data;
|
SET @save_max_length_for_sort_data= @@max_length_for_sort_data;
|
||||||
SET max_sort_length=8;
|
SET max_sort_length=8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_sort_length value: '8'
|
||||||
SET sort_buffer_size=1024;
|
SET sort_buffer_size=1024;
|
||||||
SET max_length_for_sort_data=7000;
|
SET max_length_for_sort_data=7000;
|
||||||
CREATE TABLE t1(a VARCHAR(64), b VARCHAR(2048))DEFAULT CHARSET=utf8;
|
CREATE TABLE t1(a VARCHAR(64), b VARCHAR(2048))DEFAULT CHARSET=utf8;
|
||||||
@ -3519,6 +3525,8 @@ INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4);
|
|||||||
SET max_length_for_sort_data= 30;
|
SET max_length_for_sort_data= 30;
|
||||||
SET sql_select_limit = 3;
|
SET sql_select_limit = 3;
|
||||||
SET max_sort_length=8;
|
SET max_sort_length=8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect max_sort_length value: '8'
|
||||||
SELECT * FROM t1 ORDER BY a+1;
|
SELECT * FROM t1 ORDER BY a+1;
|
||||||
a b
|
a b
|
||||||
1 1
|
1 1
|
||||||
|
@ -532,11 +532,11 @@ drop table t1, t2;
|
|||||||
# Bug #5428: a problem with small max_sort_length value
|
# Bug #5428: a problem with small max_sort_length value
|
||||||
#
|
#
|
||||||
|
|
||||||
create table t1 (a char(25));
|
create table t1 (a char(70));
|
||||||
insert into t1 set a = repeat('x', 20);
|
insert into t1 set a = repeat('x', 20);
|
||||||
insert into t1 set a = concat(repeat('x', 19), 'z');
|
insert into t1 set a = concat(repeat('x', 63), 'z');
|
||||||
insert into t1 set a = concat(repeat('x', 19), 'ab');
|
insert into t1 set a = concat(repeat('x', 63), 'ab');
|
||||||
insert into t1 set a = concat(repeat('x', 19), 'aa');
|
insert into t1 set a = concat(repeat('x', 63), 'aa');
|
||||||
set max_sort_length=20;
|
set max_sort_length=20;
|
||||||
select a from t1 order by a;
|
select a from t1 order by a;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -8016,4 +8016,8 @@ create or replace view v1 as select 1 IS TRUE IS FALSE, 2 IS FALSE IS UNKNOWN, 3
|
|||||||
Select view_definition from information_schema.views where table_schema='test' and table_name='v1';
|
Select view_definition from information_schema.views where table_schema='test' and table_name='v1';
|
||||||
view_definition
|
view_definition
|
||||||
select 1 is true is false AS `1 IS TRUE IS FALSE`,/*always not null*/ 1 is null AS `2 IS FALSE IS UNKNOWN`,/*always not null*/ 1 is null AS `3 IS UNKNOWN IS NULL`,/*always not null*/ 1 is null is true AS `4 IS NULL IS TRUE`
|
select 1 is true is false AS `1 IS TRUE IS FALSE`,/*always not null*/ 1 is null AS `2 IS FALSE IS UNKNOWN`,/*always not null*/ 1 is null AS `3 IS UNKNOWN IS NULL`,/*always not null*/ 1 is null is true AS `4 IS NULL IS TRUE`
|
||||||
|
create or replace view v1 as select 2 IS TRUE = 3, 2 IS FALSE = 3, 2 IS UNKNOWN = 3, 2 IS NULL = 3, ISNULL(2) = 1;
|
||||||
|
Select view_definition from information_schema.views where table_schema='test' and table_name='v1';
|
||||||
|
view_definition
|
||||||
|
select 2 is true = 3 AS `2 IS TRUE = 3`,2 is false = 3 AS `2 IS FALSE = 3`,/*always not null*/ 1 is null = 3 AS `2 IS UNKNOWN = 3`,/*always not null*/ 1 is null = 3 AS `2 IS NULL = 3`,/*always not null*/ 1 is null = 1 AS `ISNULL(2) = 1`
|
||||||
drop view v1;
|
drop view v1;
|
||||||
|
@ -4785,4 +4785,7 @@ Select view_definition from information_schema.views where table_schema='test' a
|
|||||||
create or replace view v1 as select 1 IS TRUE IS FALSE, 2 IS FALSE IS UNKNOWN, 3 IS UNKNOWN IS NULL, 4 IS NULL IS TRUE;
|
create or replace view v1 as select 1 IS TRUE IS FALSE, 2 IS FALSE IS UNKNOWN, 3 IS UNKNOWN IS NULL, 4 IS NULL IS TRUE;
|
||||||
Select view_definition from information_schema.views where table_schema='test' and table_name='v1';
|
Select view_definition from information_schema.views where table_schema='test' and table_name='v1';
|
||||||
|
|
||||||
|
create or replace view v1 as select 2 IS TRUE = 3, 2 IS FALSE = 3, 2 IS UNKNOWN = 3, 2 IS NULL = 3, ISNULL(2) = 1;
|
||||||
|
Select view_definition from information_schema.views where table_schema='test' and table_name='v1';
|
||||||
|
|
||||||
drop view v1;
|
drop view v1;
|
||||||
|
@ -818,33 +818,33 @@ select @@character_set_results;
|
|||||||
NULL
|
NULL
|
||||||
set character_set_results=default;
|
set character_set_results=default;
|
||||||
set GLOBAL query_cache_size=1355776;
|
set GLOBAL query_cache_size=1355776;
|
||||||
create table t1 (id int auto_increment primary key, c char(25));
|
create table t1 (id int auto_increment primary key, c char(65));
|
||||||
insert into t1 set c = repeat('x',24);
|
insert into t1 set c = repeat('x',24);
|
||||||
insert into t1 set c = concat(repeat('x',24),'x');
|
insert into t1 set c = concat(repeat('x',64),'x');
|
||||||
insert into t1 set c = concat(repeat('x',24),'w');
|
insert into t1 set c = concat(repeat('x',64),'w');
|
||||||
insert into t1 set c = concat(repeat('x',24),'y');
|
insert into t1 set c = concat(repeat('x',64),'y');
|
||||||
set max_sort_length=200;
|
set max_sort_length=200;
|
||||||
select c from t1 order by c, id;
|
select c from t1 order by c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy
|
||||||
reset query cache;
|
reset query cache;
|
||||||
set max_sort_length=20;
|
set max_sort_length=64;
|
||||||
select c from t1 order by c, id;
|
select c from t1 order by c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy
|
||||||
set max_sort_length=200;
|
set max_sort_length=200;
|
||||||
select c from t1 order by c, id;
|
select c from t1 order by c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxy
|
||||||
set max_sort_length=default;
|
set max_sort_length=default;
|
||||||
select '1' || '3' from t1;
|
select '1' || '3' from t1;
|
||||||
'1' || '3'
|
'1' || '3'
|
||||||
|
@ -606,15 +606,15 @@ set character_set_results=default;
|
|||||||
#
|
#
|
||||||
# max_sort_length
|
# max_sort_length
|
||||||
set GLOBAL query_cache_size=1355776;
|
set GLOBAL query_cache_size=1355776;
|
||||||
create table t1 (id int auto_increment primary key, c char(25));
|
create table t1 (id int auto_increment primary key, c char(65));
|
||||||
insert into t1 set c = repeat('x',24);
|
insert into t1 set c = repeat('x',24);
|
||||||
insert into t1 set c = concat(repeat('x',24),'x');
|
insert into t1 set c = concat(repeat('x',64),'x');
|
||||||
insert into t1 set c = concat(repeat('x',24),'w');
|
insert into t1 set c = concat(repeat('x',64),'w');
|
||||||
insert into t1 set c = concat(repeat('x',24),'y');
|
insert into t1 set c = concat(repeat('x',64),'y');
|
||||||
set max_sort_length=200;
|
set max_sort_length=200;
|
||||||
select c from t1 order by c, id;
|
select c from t1 order by c, id;
|
||||||
reset query cache;
|
reset query cache;
|
||||||
set max_sort_length=20;
|
set max_sort_length=64;
|
||||||
select c from t1 order by c, id;
|
select c from t1 order by c, id;
|
||||||
set max_sort_length=200;
|
set max_sort_length=200;
|
||||||
select c from t1 order by c, id;
|
select c from t1 order by c, id;
|
||||||
|
@ -3218,6 +3218,31 @@ pk a b
|
|||||||
1 5 50
|
1 5 50
|
||||||
65 5 50
|
65 5 50
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
create table t2 (
|
||||||
|
pk int primary key,
|
||||||
|
key1 int,
|
||||||
|
col1 varchar(255),
|
||||||
|
key (key1, pk)
|
||||||
|
);
|
||||||
|
insert into t2 (pk, key1)
|
||||||
|
select A.a+10 *B.a + 100*C.a, A.a+10 *B.a +100*C.a from t1 A, t1 B, t1 C;
|
||||||
|
# This must use ALL, not range:
|
||||||
|
explain select * from t2 force index (primary) where pk not in (1,2,3);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 1000 Using where
|
||||||
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# MDEV-24444: ASAN use-after-poison in Item_func_in::get_func_mm_tree with NOT IN
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (id INT, a CHAR(3), b INT, PRIMARY KEY(id), KEY(b), KEY(a));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo',10),(2,'bar',20);
|
||||||
|
CREATE TABLE t2 (code CHAR(8), num INT, PRIMARY KEY (code));
|
||||||
|
INSERT INTO t2 VALUES ('100',1),('111',2);
|
||||||
|
SELECT * FROM t1 JOIN t2 ON (t2.code = t1.b) WHERE t1.a NOT IN ('baz', 'qux') OR t2.num != 3;
|
||||||
|
id a b code num
|
||||||
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
|
@ -2180,6 +2180,40 @@ eval $q4;
|
|||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-21958: Query having many NOT-IN clauses running forever (testcase 2)
|
||||||
|
#
|
||||||
|
create table t1(a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
|
||||||
|
create table t2 (
|
||||||
|
pk int primary key,
|
||||||
|
key1 int,
|
||||||
|
col1 varchar(255),
|
||||||
|
key (key1, pk)
|
||||||
|
);
|
||||||
|
|
||||||
|
insert into t2 (pk, key1)
|
||||||
|
select A.a+10 *B.a + 100*C.a, A.a+10 *B.a +100*C.a from t1 A, t1 B, t1 C;
|
||||||
|
|
||||||
|
--echo # This must use ALL, not range:
|
||||||
|
explain select * from t2 force index (primary) where pk not in (1,2,3);
|
||||||
|
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-24444: ASAN use-after-poison in Item_func_in::get_func_mm_tree with NOT IN
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (id INT, a CHAR(3), b INT, PRIMARY KEY(id), KEY(b), KEY(a));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo',10),(2,'bar',20);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (code CHAR(8), num INT, PRIMARY KEY (code));
|
||||||
|
INSERT INTO t2 VALUES ('100',1),('111',2);
|
||||||
|
|
||||||
|
SELECT * FROM t1 JOIN t2 ON (t2.code = t1.b) WHERE t1.a NOT IN ('baz', 'qux') OR t2.num != 3;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -3215,6 +3215,31 @@ pk a b
|
|||||||
70 4 40
|
70 4 40
|
||||||
71 2 20
|
71 2 20
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(a int);
|
||||||
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
create table t2 (
|
||||||
|
pk int primary key,
|
||||||
|
key1 int,
|
||||||
|
col1 varchar(255),
|
||||||
|
key (key1, pk)
|
||||||
|
);
|
||||||
|
insert into t2 (pk, key1)
|
||||||
|
select A.a+10 *B.a + 100*C.a, A.a+10 *B.a +100*C.a from t1 A, t1 B, t1 C;
|
||||||
|
# This must use ALL, not range:
|
||||||
|
explain select * from t2 force index (primary) where pk not in (1,2,3);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 1000 Using where
|
||||||
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# MDEV-24444: ASAN use-after-poison in Item_func_in::get_func_mm_tree with NOT IN
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (id INT, a CHAR(3), b INT, PRIMARY KEY(id), KEY(b), KEY(a));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo',10),(2,'bar',20);
|
||||||
|
CREATE TABLE t2 (code CHAR(8), num INT, PRIMARY KEY (code));
|
||||||
|
INSERT INTO t2 VALUES ('100',1),('111',2);
|
||||||
|
SELECT * FROM t1 JOIN t2 ON (t2.code = t1.b) WHERE t1.a NOT IN ('baz', 'qux') OR t2.num != 3;
|
||||||
|
id a b code num
|
||||||
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
drop table if exists t1;
|
|
||||||
create table t1 (y year,y2 year(2));
|
create table t1 (y year,y2 year(2));
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
||||||
@ -28,6 +27,9 @@ y y2
|
|||||||
2001 01
|
2001 01
|
||||||
2069 69
|
2069 69
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug 2335
|
||||||
|
#
|
||||||
create table t1 (y year);
|
create table t1 (y year);
|
||||||
insert ignore into t1 values (now());
|
insert ignore into t1 values (now());
|
||||||
Warnings:
|
Warnings:
|
||||||
@ -36,6 +38,9 @@ select if(y = now(), 1, 0) from t1;
|
|||||||
if(y = now(), 1, 0)
|
if(y = now(), 1, 0)
|
||||||
1
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug #27176: Assigning a string to an year column has unexpected results
|
||||||
|
#
|
||||||
create table t1(a year);
|
create table t1(a year);
|
||||||
insert into t1 values (2000.5), ('2000.5'), ('2001a'), ('2.001E3');
|
insert into t1 values (2000.5), ('2000.5'), ('2001a'), ('2.001E3');
|
||||||
Warnings:
|
Warnings:
|
||||||
@ -47,7 +52,9 @@ a
|
|||||||
2001
|
2001
|
||||||
2001
|
2001
|
||||||
drop table t1;
|
drop table t1;
|
||||||
End of 5.0 tests
|
#
|
||||||
|
# End of 5.0 tests
|
||||||
|
#
|
||||||
#
|
#
|
||||||
# Bug #49480: WHERE using YEAR columns returns unexpected results
|
# Bug #49480: WHERE using YEAR columns returns unexpected results
|
||||||
#
|
#
|
||||||
@ -373,7 +380,8 @@ Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Pleas
|
|||||||
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
End of 5.1 tests
|
# End of 5.1 tests
|
||||||
|
#
|
||||||
create function y2k() returns int deterministic return 2000;
|
create function y2k() returns int deterministic return 2000;
|
||||||
create table t1 (a year(2), b int);
|
create table t1 (a year(2), b int);
|
||||||
Warnings:
|
Warnings:
|
||||||
@ -456,9 +464,6 @@ DROP TABLE t1;
|
|||||||
# End of 10.1 tests
|
# End of 10.1 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Start of 10.2 tests
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# MDEV-9392 Copying from DECIMAL to YEAR is not consistent about warnings
|
# MDEV-9392 Copying from DECIMAL to YEAR is not consistent about warnings
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a YEAR);
|
CREATE TABLE t1 (a YEAR);
|
||||||
@ -500,6 +505,64 @@ Warnings:
|
|||||||
Warning 1264 Out of range value for column 'a' at row 1
|
Warning 1264 Out of range value for column 'a' at row 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# Various widths of the YEAR
|
||||||
|
#
|
||||||
|
create or replace table t1 (a YEAR(0));
|
||||||
|
Warnings:
|
||||||
|
Note 1287 'YEAR(0)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` year(4) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
create or replace table t1 (a YEAR(1));
|
||||||
|
Warnings:
|
||||||
|
Note 1287 'YEAR(1)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` year(4) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
create or replace table t1 (a YEAR(2));
|
||||||
|
Warnings:
|
||||||
|
Note 1287 'YEAR(2)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` year(2) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
create or replace table t1 (a YEAR(3));
|
||||||
|
Warnings:
|
||||||
|
Note 1287 'YEAR(3)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` year(4) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
create or replace table t1 (a YEAR(4));
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` year(4) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
create or replace table t1 (a YEAR(5));
|
||||||
|
Warnings:
|
||||||
|
Note 1287 'YEAR(5)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` year(4) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
create or replace table t1 (a YEAR(100));
|
||||||
|
Warnings:
|
||||||
|
Note 1287 'YEAR(100)' is deprecated and will be removed in a future release. Please use YEAR(4) instead
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` year(4) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Test year
|
# Test year
|
||||||
#
|
#
|
||||||
--disable_warnings
|
|
||||||
drop table if exists t1;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
create table t1 (y year,y2 year(2));
|
create table t1 (y year,y2 year(2));
|
||||||
insert into t1 values (0,0),(1999,1999),(2000,2000),(2001,2001),(70,70),(69,69);
|
insert into t1 values (0,0),(1999,1999),(2000,2000),(2001,2001),(70,70),(69,69);
|
||||||
@ -12,24 +9,27 @@ select * from t1 order by y;
|
|||||||
select * from t1 order by y2;
|
select * from t1 order by y2;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
--echo #
|
||||||
# Bug 2335
|
--echo # Bug 2335
|
||||||
#
|
--echo #
|
||||||
|
|
||||||
create table t1 (y year);
|
create table t1 (y year);
|
||||||
insert ignore into t1 values (now());
|
insert ignore into t1 values (now());
|
||||||
select if(y = now(), 1, 0) from t1;
|
select if(y = now(), 1, 0) from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
--echo #
|
||||||
# Bug #27176: Assigning a string to an year column has unexpected results
|
--echo # Bug #27176: Assigning a string to an year column has unexpected results
|
||||||
#
|
--echo #
|
||||||
|
|
||||||
create table t1(a year);
|
create table t1(a year);
|
||||||
insert into t1 values (2000.5), ('2000.5'), ('2001a'), ('2.001E3');
|
insert into t1 values (2000.5), ('2000.5'), ('2001a'), ('2.001E3');
|
||||||
select * from t1;
|
select * from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo #
|
||||||
|
--echo # End of 5.0 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug #49480: WHERE using YEAR columns returns unexpected results
|
--echo # Bug #49480: WHERE using YEAR columns returns unexpected results
|
||||||
@ -168,9 +168,10 @@ CREATE TABLE t1 (c1 YEAR(2), c2 YEAR(4));
|
|||||||
ALTER TABLE t1 MODIFY COLUMN c2 YEAR(2);
|
ALTER TABLE t1 MODIFY COLUMN c2 YEAR(2);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 5.1 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
|
||||||
#
|
#
|
||||||
# fun with convert_const_to_int
|
# fun with convert_const_to_int
|
||||||
# in some cases 00 is equal to 2000, in others it is not.
|
# in some cases 00 is equal to 2000, in others it is not.
|
||||||
@ -229,10 +230,6 @@ DROP TABLE t1;
|
|||||||
--echo # End of 10.1 tests
|
--echo # End of 10.1 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
--echo #
|
|
||||||
--echo # Start of 10.2 tests
|
|
||||||
--echo #
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-9392 Copying from DECIMAL to YEAR is not consistent about warnings
|
--echo # MDEV-9392 Copying from DECIMAL to YEAR is not consistent about warnings
|
||||||
--echo #
|
--echo #
|
||||||
@ -268,6 +265,17 @@ SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR
|
|||||||
ALTER TABLE t1 MODIFY a YEAR;
|
ALTER TABLE t1 MODIFY a YEAR;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Various widths of the YEAR
|
||||||
|
--echo #
|
||||||
|
create or replace table t1 (a YEAR(0)); SHOW CREATE TABLE t1;
|
||||||
|
create or replace table t1 (a YEAR(1)); SHOW CREATE TABLE t1;
|
||||||
|
create or replace table t1 (a YEAR(2)); SHOW CREATE TABLE t1;
|
||||||
|
create or replace table t1 (a YEAR(3)); SHOW CREATE TABLE t1;
|
||||||
|
create or replace table t1 (a YEAR(4)); SHOW CREATE TABLE t1;
|
||||||
|
create or replace table t1 (a YEAR(5)); SHOW CREATE TABLE t1;
|
||||||
|
create or replace table t1 (a YEAR(100)); SHOW CREATE TABLE t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
|
@ -6723,6 +6723,41 @@ DROP PROCEDURE sp;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-24314: create view with derived table without default database
|
||||||
|
#
|
||||||
|
drop database test;
|
||||||
|
create database db1;
|
||||||
|
create table db1.t1 (a int);
|
||||||
|
insert into db1.t1 values (3),(7),(1);
|
||||||
|
create view db1.v1 as select * from (select * from db1.t1) t;
|
||||||
|
show create view db1.v1;
|
||||||
|
View Create View character_set_client collation_connection
|
||||||
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `db1`.`v1` AS select `t`.`a` AS `a` from (select `db1`.`t1`.`a` AS `a` from `db1`.`t1`) `t` latin1 latin1_swedish_ci
|
||||||
|
select * from db1.v1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
7
|
||||||
|
1
|
||||||
|
drop view db1.v1;
|
||||||
|
prepare stmt from "
|
||||||
|
create view db1.v1 as select * from (select * from db1.t1) t;
|
||||||
|
";
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
show create view db1.v1;
|
||||||
|
View Create View character_set_client collation_connection
|
||||||
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `db1`.`v1` AS select `t`.`a` AS `a` from (select `db1`.`t1`.`a` AS `a` from `db1`.`t1`) `t` latin1 latin1_swedish_ci
|
||||||
|
select * from db1.v1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
7
|
||||||
|
1
|
||||||
|
drop view db1.v1;
|
||||||
|
drop table db1.t1;
|
||||||
|
drop database db1;
|
||||||
|
create database test;
|
||||||
|
use test;
|
||||||
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -6432,6 +6432,36 @@ DROP PROCEDURE sp;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-24314: create view with derived table without default database
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
drop database test;
|
||||||
|
|
||||||
|
create database db1;
|
||||||
|
create table db1.t1 (a int);
|
||||||
|
insert into db1.t1 values (3),(7),(1);
|
||||||
|
|
||||||
|
create view db1.v1 as select * from (select * from db1.t1) t;
|
||||||
|
show create view db1.v1;
|
||||||
|
select * from db1.v1;
|
||||||
|
drop view db1.v1;
|
||||||
|
|
||||||
|
prepare stmt from "
|
||||||
|
create view db1.v1 as select * from (select * from db1.t1) t;
|
||||||
|
";
|
||||||
|
execute stmt;
|
||||||
|
deallocate prepare stmt;
|
||||||
|
show create view db1.v1;
|
||||||
|
select * from db1.v1;
|
||||||
|
drop view db1.v1;
|
||||||
|
|
||||||
|
drop table db1.t1;
|
||||||
|
drop database db1;
|
||||||
|
|
||||||
|
create database test;
|
||||||
|
use test;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -3222,6 +3222,7 @@ sub mysql_install_db {
|
|||||||
mtr_add_arg($args, "--tmpdir=%s", "$opt_vardir/tmp/");
|
mtr_add_arg($args, "--tmpdir=%s", "$opt_vardir/tmp/");
|
||||||
mtr_add_arg($args, "--core-file");
|
mtr_add_arg($args, "--core-file");
|
||||||
mtr_add_arg($args, "--console");
|
mtr_add_arg($args, "--console");
|
||||||
|
mtr_add_arg($args, "--character-set-server=latin1");
|
||||||
|
|
||||||
if ( $opt_debug )
|
if ( $opt_debug )
|
||||||
{
|
{
|
||||||
|
@ -9,5 +9,3 @@
|
|||||||
# Do not use any TAB characters for whitespace.
|
# Do not use any TAB characters for whitespace.
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
binlog_truncate_innodb : BUG#11764459 2010-10-20 anitha Originally disabled due to BUG#42643. Product bug fixed, but test changes needed
|
|
||||||
binlog_spurious_ddl_errors : BUG#11761680 2013-01-18 astha Fixed on mysql-5.6 and trunk
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
SET @old_binlog_format= @@global.binlog_format;
|
SET @old_binlog_format= @@global.binlog_format;
|
||||||
INSTALL PLUGIN example SONAME 'ha_example.so';
|
INSTALL PLUGIN example SONAME 'ha_example';
|
||||||
################################################################################
|
################################################################################
|
||||||
# Verifies if ER_BINLOG_STMT_MODE_AND_ROW_ENGINE happens by setting the binlog
|
# Verifies if ER_BINLOG_STMT_MODE_AND_ROW_ENGINE happens by setting the binlog
|
||||||
# format to STATEMENT and the transaction isolation level to READ COMMITTED as
|
# format to STATEMENT and the transaction isolation level to READ COMMITTED as
|
||||||
@ -18,7 +18,7 @@ ALTER TABLE t_row ADD COLUMN b INT;
|
|||||||
CREATE TRIGGER trig_row BEFORE INSERT ON t_row FOR EACH ROW INSERT INTO t_stmt VALUES (1);
|
CREATE TRIGGER trig_row BEFORE INSERT ON t_row FOR EACH ROW INSERT INTO t_stmt VALUES (1);
|
||||||
CREATE INDEX i ON t_row(a);
|
CREATE INDEX i ON t_row(a);
|
||||||
CREATE TABLE t_row_new ENGINE = InnoDB SELECT * FROM t_row;
|
CREATE TABLE t_row_new ENGINE = InnoDB SELECT * FROM t_row;
|
||||||
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
|
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging.
|
||||||
DROP TABLE t_row;
|
DROP TABLE t_row;
|
||||||
|
|
||||||
|
|
||||||
@ -36,12 +36,11 @@ DROP TABLE t_row;
|
|||||||
SET binlog_format = ROW;
|
SET binlog_format = ROW;
|
||||||
CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE;
|
CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE;
|
||||||
ALTER TABLE t_stmt ADD COLUMN b INT;
|
ALTER TABLE t_stmt ADD COLUMN b INT;
|
||||||
ERROR 42000: This version of MySQL doesn't yet support 'ALTER TABLE'
|
|
||||||
CREATE TRIGGER trig_stmt BEFORE INSERT ON t_stmt FOR EACH ROW INSERT INTO t_stmt VALUES (1);
|
CREATE TRIGGER trig_stmt BEFORE INSERT ON t_stmt FOR EACH ROW INSERT INTO t_stmt VALUES (1);
|
||||||
CREATE INDEX i ON t_stmt(a);
|
CREATE INDEX i ON t_stmt(a);
|
||||||
ERROR 42000: Too many key parts specified; max 0 parts allowed
|
ERROR 42000: Too many key parts specified; max 0 parts allowed
|
||||||
CREATE TABLE t_stmt_new ENGINE = EXAMPLE SELECT * FROM t_stmt;
|
CREATE TABLE t_stmt_new ENGINE = EXAMPLE SELECT * FROM t_stmt;
|
||||||
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging.
|
ERROR HY000: Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = ROW and at least one table uses a storage engine limited to statement-based logging
|
||||||
DROP TABLE t_stmt;
|
DROP TABLE t_stmt;
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,9 +7,11 @@ INSERT INTO t2 VALUES (1),(2),(3);
|
|||||||
**** Truncate of empty table shall be logged
|
**** Truncate of empty table shall be logged
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
TRUNCATE TABLE t2;
|
TRUNCATE TABLE t2;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
@ -18,18 +20,17 @@ DROP TABLE t1,t2;
|
|||||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
# Connection: default
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
# Connection: truncate
|
connect truncate,localhost,root,,;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
# Connection: default
|
connection default;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# Connection: truncate
|
connection truncate;
|
||||||
# Reaping TRUNCATE TABLE
|
# Reaping TRUNCATE TABLE
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -37,16 +38,20 @@ COUNT(*)
|
|||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
# Connection: default
|
connection default;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
disconnect truncate;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
# Even though the isolation level might be permissive, truncate
|
# Even though the isolation level might be permissive, truncate
|
||||||
# table follows a stricter isolation as its locking is based on
|
# table follows a stricter isolation as its locking is based on
|
||||||
@ -59,9 +64,11 @@ SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
|||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||||
TRUNCATE TABLE t2;
|
TRUNCATE TABLE t2;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
@ -71,18 +78,17 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
|
||||||
# Connection: default
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
# Connection: truncate
|
connect truncate,localhost,root,,;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
# Connection: default
|
connection default;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# Connection: truncate
|
connection truncate;
|
||||||
# Reaping TRUNCATE TABLE
|
# Reaping TRUNCATE TABLE
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -90,16 +96,20 @@ COUNT(*)
|
|||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
# Connection: default
|
connection default;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
disconnect truncate;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
@ -109,9 +119,11 @@ SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
TRUNCATE TABLE t2;
|
TRUNCATE TABLE t2;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
@ -121,18 +133,17 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
# Connection: default
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
# Connection: truncate
|
connect truncate,localhost,root,,;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
# Connection: default
|
connection default;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# Connection: truncate
|
connection truncate;
|
||||||
# Reaping TRUNCATE TABLE
|
# Reaping TRUNCATE TABLE
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -140,16 +151,20 @@ COUNT(*)
|
|||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
# Connection: default
|
connection default;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
disconnect truncate;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
@ -159,9 +174,11 @@ SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||||
TRUNCATE TABLE t2;
|
TRUNCATE TABLE t2;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
@ -171,18 +188,17 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||||
# Connection: default
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
# Connection: truncate
|
connect truncate,localhost,root,,;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
# Connection: default
|
connection default;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# Connection: truncate
|
connection truncate;
|
||||||
# Reaping TRUNCATE TABLE
|
# Reaping TRUNCATE TABLE
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -190,16 +206,20 @@ COUNT(*)
|
|||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
# Connection: default
|
connection default;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
disconnect truncate;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
@ -209,9 +229,11 @@ SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||||
TRUNCATE TABLE t2;
|
TRUNCATE TABLE t2;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
@ -221,18 +243,17 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||||
# Connection: default
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
# Connection: truncate
|
connect truncate,localhost,root,,;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
# Connection: default
|
connection default;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# Connection: truncate
|
connection truncate;
|
||||||
# Reaping TRUNCATE TABLE
|
# Reaping TRUNCATE TABLE
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -240,16 +261,20 @@ COUNT(*)
|
|||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
# Connection: default
|
connection default;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Annotate_rows # # INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
disconnect truncate;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
SET BINLOG_FORMAT=STATEMENT;
|
SET BINLOG_FORMAT=STATEMENT;
|
||||||
RESET MASTER;
|
RESET MASTER;
|
||||||
@ -261,9 +286,11 @@ SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||||
TRUNCATE TABLE t2;
|
TRUNCATE TABLE t2;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
@ -273,18 +300,17 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||||
# Connection: default
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
# Connection: truncate
|
connect truncate,localhost,root,,;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
# Connection: default
|
connection default;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# Connection: truncate
|
connection truncate;
|
||||||
# Reaping TRUNCATE TABLE
|
# Reaping TRUNCATE TABLE
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -292,14 +318,16 @@ COUNT(*)
|
|||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
# Connection: default
|
connection default;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
disconnect truncate;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
# Truncate is not supported for SBR if the isolation level is
|
# Truncate is not supported for SBR if the isolation level is
|
||||||
# READ UNCOMMITTED or READ COMMITTED. These specific isolation
|
# READ UNCOMMITTED or READ COMMITTED. These specific isolation
|
||||||
@ -312,9 +340,11 @@ SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||||
TRUNCATE TABLE t2;
|
TRUNCATE TABLE t2;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
@ -324,18 +354,17 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
||||||
# Connection: default
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
# Connection: truncate
|
connect truncate,localhost,root,,;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
# Connection: default
|
connection default;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# Connection: truncate
|
connection truncate;
|
||||||
# Reaping TRUNCATE TABLE
|
# Reaping TRUNCATE TABLE
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -343,14 +372,16 @@ COUNT(*)
|
|||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
# Connection: default
|
connection default;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
disconnect truncate;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
@ -360,9 +391,11 @@ SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
|||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||||
TRUNCATE TABLE t2;
|
TRUNCATE TABLE t2;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t2
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
#
|
#
|
||||||
@ -372,18 +405,17 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
|||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||||
# Connection: default
|
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
# Connection: truncate
|
connect truncate,localhost,root,,;
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
# Connection: default
|
connection default;
|
||||||
INSERT INTO t2 SELECT * FROM t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
COMMIT;
|
COMMIT;
|
||||||
# Connection: truncate
|
connection truncate;
|
||||||
# Reaping TRUNCATE TABLE
|
# Reaping TRUNCATE TABLE
|
||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
@ -391,13 +423,16 @@ COUNT(*)
|
|||||||
SELECT COUNT(*) FROM t2;
|
SELECT COUNT(*) FROM t2;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
4
|
4
|
||||||
# Connection: default
|
connection default;
|
||||||
show binlog events from <binlog_start>;
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query # # BEGIN
|
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
master-bin.000001 # Gtid # # GTID #-#-#
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
|
||||||
|
disconnect truncate;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
SET BINLOG_FORMAT=@old_binlog_format;
|
SET @@global.binlog_format = @old_binlog_format;
|
||||||
|
SET @@session.binlog_format = @old_binlog_format;
|
||||||
|
@ -1 +0,0 @@
|
|||||||
--innodb
|
|
@ -71,7 +71,6 @@ DROP TABLE t_row;
|
|||||||
SET binlog_format = ROW;
|
SET binlog_format = ROW;
|
||||||
CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE;
|
CREATE TABLE t_stmt (a VARCHAR(100)) ENGINE = EXAMPLE;
|
||||||
|
|
||||||
--error ER_NOT_SUPPORTED_YET
|
|
||||||
ALTER TABLE t_stmt ADD COLUMN b INT;
|
ALTER TABLE t_stmt ADD COLUMN b INT;
|
||||||
|
|
||||||
CREATE TRIGGER trig_stmt BEFORE INSERT ON t_stmt FOR EACH ROW INSERT INTO t_stmt VALUES (1);
|
CREATE TRIGGER trig_stmt BEFORE INSERT ON t_stmt FOR EACH ROW INSERT INTO t_stmt VALUES (1);
|
||||||
|
@ -1 +0,0 @@
|
|||||||
--loose-innodb
|
|
@ -41,4 +41,5 @@ source include/binlog_truncate.test;
|
|||||||
let $before_truncate = SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
let $before_truncate = SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
|
||||||
source include/binlog_truncate.test;
|
source include/binlog_truncate.test;
|
||||||
|
|
||||||
SET BINLOG_FORMAT=@old_binlog_format;
|
SET @@global.binlog_format = @old_binlog_format;
|
||||||
|
SET @@session.binlog_format = @old_binlog_format;
|
@ -164,20 +164,15 @@ connection slave;
|
|||||||
connection slave;
|
connection slave;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
connection master;
|
connection master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
set global rpl_semi_sync_master_timeout= 5000;
|
set global rpl_semi_sync_master_timeout= 5000;
|
||||||
[ master status should be ON ]
|
[ master status should be ON ]
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_status ON
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_no_tx 0
|
Rpl_semi_sync_master_no_tx 0
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_yes_tx 14
|
Rpl_semi_sync_master_yes_tx 14
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_clients 0
|
|
||||||
[ semi-sync replication of these transactions will fail ]
|
[ semi-sync replication of these transactions will fail ]
|
||||||
insert into t1 values (500);
|
insert into t1 values (500);
|
||||||
[ master status should be OFF ]
|
[ master status should be OFF ]
|
||||||
@ -235,9 +230,6 @@ max(a)
|
|||||||
500
|
500
|
||||||
connection master;
|
connection master;
|
||||||
[ master status should be ON again after slave catches up ]
|
[ master status should be ON again after slave catches up ]
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_status ON
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_no_tx 12
|
Rpl_semi_sync_master_no_tx 12
|
||||||
@ -304,8 +296,6 @@ connection master;
|
|||||||
create table t1 (a int) engine = ENGINE_TYPE;
|
create table t1 (a int) engine = ENGINE_TYPE;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
connection slave;
|
connection slave;
|
||||||
show status like 'Rpl_relay%';
|
|
||||||
Variable_name Value
|
|
||||||
[ test reset master ]
|
[ test reset master ]
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
@ -321,7 +311,7 @@ Rpl_semi_sync_master_yes_tx 0
|
|||||||
connection slave;
|
connection slave;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
reset slave;
|
reset slave;
|
||||||
connection master;
|
include/kill_binlog_dump_threads.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
include/start_slave.inc
|
include/start_slave.inc
|
||||||
connection master;
|
connection master;
|
||||||
@ -353,6 +343,7 @@ include/stop_slave.inc
|
|||||||
reset slave;
|
reset slave;
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
set sql_log_bin=0;
|
set sql_log_bin=0;
|
||||||
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
|
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
@ -403,10 +394,8 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_slave_status OFF
|
Rpl_semi_sync_slave_status OFF
|
||||||
connection master;
|
connection master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
[ Semi-sync status on master should be ON ]
|
[ Semi-sync status on master should be ON ]
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_clients 0
|
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
show status like 'Rpl_semi_sync_master_status';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_status ON
|
Rpl_semi_sync_master_status ON
|
||||||
|
@ -2284,6 +2284,32 @@ connection master;
|
|||||||
CREATE TABLE t1 (a INT) ENGINE=FEDERATED CONNECTION='mysql://@127.0.0.1:SLAVE_PORT/federated/t1';
|
CREATE TABLE t1 (a INT) ENGINE=FEDERATED CONNECTION='mysql://@127.0.0.1:SLAVE_PORT/federated/t1';
|
||||||
ERROR HY000: Can't create federated table. Foreign data src error: database: 'federated' username: '' hostname: '127.0.0.1'
|
ERROR HY000: Can't create federated table. Foreign data src error: database: 'federated' username: '' hostname: '127.0.0.1'
|
||||||
#
|
#
|
||||||
|
# MDEV-17573 Assertion in federatedx on multi-update
|
||||||
|
#
|
||||||
|
create table t1 (
|
||||||
|
x int,
|
||||||
|
d datetime);
|
||||||
|
create table t1f engine=FEDERATED connection='mysql://root@127.0.0.1:MASTER_MYPORT/test/t1';
|
||||||
|
create table t2 (
|
||||||
|
x int, y int,
|
||||||
|
d datetime);
|
||||||
|
create table t2f engine=FEDERATED connection='mysql://root@127.0.0.1:MASTER_MYPORT/test/t2';
|
||||||
|
create table t3 (
|
||||||
|
x int, y int, z int,
|
||||||
|
d datetime);
|
||||||
|
create table t3f engine=FEDERATED connection='mysql://root@127.0.0.1:MASTER_MYPORT/test/t3';
|
||||||
|
insert into t1 values (1, "1990-01-01 00:00");
|
||||||
|
insert into t1 values (1, "1991-01-01 11:11");
|
||||||
|
insert into t2 values (2, 2, "1992-02-02 22:22");
|
||||||
|
insert into t3 values (3, 3, 3, "1993-03-03 23:33");
|
||||||
|
update t1f, t2f, t3f set t1f.x= 11, t2f.y= 22, t3f.z= 33;
|
||||||
|
drop table t1f;
|
||||||
|
drop table t2f;
|
||||||
|
drop table t3f;
|
||||||
|
drop table t1;
|
||||||
|
drop table t2;
|
||||||
|
drop table t3;
|
||||||
|
#
|
||||||
# MDEV-21049 Segfault in create federatedx table with empty hostname
|
# MDEV-21049 Segfault in create federatedx table with empty hostname
|
||||||
#
|
#
|
||||||
connection master;
|
connection master;
|
||||||
|
@ -2010,6 +2010,35 @@ connection master;
|
|||||||
--error ER_CANT_CREATE_FEDERATED_TABLE
|
--error ER_CANT_CREATE_FEDERATED_TABLE
|
||||||
eval CREATE TABLE t1 (a INT) ENGINE=FEDERATED CONNECTION='mysql://@127.0.0.1:$SLAVE_MYPORT/federated/t1';
|
eval CREATE TABLE t1 (a INT) ENGINE=FEDERATED CONNECTION='mysql://@127.0.0.1:$SLAVE_MYPORT/federated/t1';
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-17573 Assertion in federatedx on multi-update
|
||||||
|
--echo #
|
||||||
|
create table t1 (
|
||||||
|
x int,
|
||||||
|
d datetime);
|
||||||
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||||
|
eval create table t1f engine=FEDERATED connection='mysql://root@127.0.0.1:$MASTER_MYPORT/test/t1';
|
||||||
|
|
||||||
|
create table t2 (
|
||||||
|
x int, y int,
|
||||||
|
d datetime);
|
||||||
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||||
|
eval create table t2f engine=FEDERATED connection='mysql://root@127.0.0.1:$MASTER_MYPORT/test/t2';
|
||||||
|
|
||||||
|
create table t3 (
|
||||||
|
x int, y int, z int,
|
||||||
|
d datetime);
|
||||||
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||||
|
eval create table t3f engine=FEDERATED connection='mysql://root@127.0.0.1:$MASTER_MYPORT/test/t3';
|
||||||
|
|
||||||
|
insert into t1 values (1, "1990-01-01 00:00");
|
||||||
|
insert into t1 values (1, "1991-01-01 11:11");
|
||||||
|
insert into t2 values (2, 2, "1992-02-02 22:22");
|
||||||
|
insert into t3 values (3, 3, 3, "1993-03-03 23:33");
|
||||||
|
update t1f, t2f, t3f set t1f.x= 11, t2f.y= 22, t3f.z= 33;
|
||||||
|
|
||||||
|
drop table t1f; drop table t2f; drop table t3f; drop table t1; drop table t2; drop table t3;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-21049 Segfault in create federatedx table with empty hostname
|
--echo # MDEV-21049 Segfault in create federatedx table with empty hostname
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -90,7 +90,9 @@ CREATE TABLE t3
|
|||||||
(
|
(
|
||||||
a int,
|
a int,
|
||||||
b int check (b>0), # field constraint named 'b'
|
b int check (b>0), # field constraint named 'b'
|
||||||
CONSTRAINT b check (b>10) # table constraint
|
CONSTRAINT b check (b>10), # table constraint
|
||||||
|
# `CHECK_CLAUSE` should allow more then `var(64)` constraints
|
||||||
|
CONSTRAINT b1 check (b<123456789012345678901234567890123456789012345678901234567890123456789)
|
||||||
) ENGINE=InnoDB;
|
) ENGINE=InnoDB;
|
||||||
SELECT * from information_schema.check_constraints;
|
SELECT * from information_schema.check_constraints;
|
||||||
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE
|
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA TABLE_NAME CONSTRAINT_NAME CHECK_CLAUSE
|
||||||
@ -104,6 +106,7 @@ def foo t2 CHK_dates `start_date` is null
|
|||||||
def foo t2 name char_length(`name`) > 2
|
def foo t2 name char_length(`name`) > 2
|
||||||
def foo t3 b `b` > 0
|
def foo t3 b `b` > 0
|
||||||
def foo t3 b `b` > 10
|
def foo t3 b `b` > 10
|
||||||
|
def foo t3 b1 `b` < 123456789012345678901234567890123456789012345678901234567890123456789
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
CONNECT con2, localhost, boo2,, test;
|
CONNECT con2, localhost, boo2,, test;
|
||||||
SELECT * from information_schema.check_constraints;
|
SELECT * from information_schema.check_constraints;
|
||||||
|
@ -24,7 +24,7 @@ def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 '' NO varchar 32 96 N
|
|||||||
def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 '' NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) select NEVER NULL
|
def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 '' NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) select NEVER NULL
|
||||||
def information_schema CHARACTER_SETS DESCRIPTION 3 '' NO varchar 60 180 NULL NULL NULL utf8 utf8_general_ci varchar(60) select NEVER NULL
|
def information_schema CHARACTER_SETS DESCRIPTION 3 '' NO varchar 60 180 NULL NULL NULL utf8 utf8_general_ci varchar(60) select NEVER NULL
|
||||||
def information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) select NEVER NULL
|
def information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) select NEVER NULL
|
||||||
def information_schema CHECK_CONSTRAINTS CHECK_CLAUSE 5 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select NEVER NULL
|
def information_schema CHECK_CONSTRAINTS CHECK_CLAUSE 5 '' NO longtext 4294967295 4294967295 NULL NULL NULL utf8 utf8_general_ci longtext select NEVER NULL
|
||||||
def information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG 1 '' NO varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512) select NEVER NULL
|
def information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG 1 '' NO varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512) select NEVER NULL
|
||||||
def information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME 4 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select NEVER NULL
|
def information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME 4 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select NEVER NULL
|
||||||
def information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA 2 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select NEVER NULL
|
def information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA 2 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select NEVER NULL
|
||||||
@ -570,7 +570,7 @@ NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(
|
|||||||
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
3.0000 information_schema CHECK_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema CHECK_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
3.0000 information_schema CHECK_CONSTRAINTS CHECK_CLAUSE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
1.0000 information_schema CHECK_CONSTRAINTS CHECK_CLAUSE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||||
3.0000 information_schema CLIENT_STATISTICS CLIENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema CLIENT_STATISTICS CLIENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
|
NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
|
||||||
NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
|
NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
|
||||||
|
@ -24,7 +24,7 @@ def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 '' NO varchar 32 96 N
|
|||||||
def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 '' NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) NEVER NULL
|
def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 '' NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) NEVER NULL
|
||||||
def information_schema CHARACTER_SETS DESCRIPTION 3 '' NO varchar 60 180 NULL NULL NULL utf8 utf8_general_ci varchar(60) NEVER NULL
|
def information_schema CHARACTER_SETS DESCRIPTION 3 '' NO varchar 60 180 NULL NULL NULL utf8 utf8_general_ci varchar(60) NEVER NULL
|
||||||
def information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) NEVER NULL
|
def information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) NEVER NULL
|
||||||
def information_schema CHECK_CONSTRAINTS CHECK_CLAUSE 5 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) NEVER NULL
|
def information_schema CHECK_CONSTRAINTS CHECK_CLAUSE 5 '' NO longtext 4294967295 4294967295 NULL NULL NULL utf8 utf8_general_ci longtext NEVER NULL
|
||||||
def information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG 1 '' NO varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512) NEVER NULL
|
def information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG 1 '' NO varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512) NEVER NULL
|
||||||
def information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME 4 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) NEVER NULL
|
def information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME 4 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) NEVER NULL
|
||||||
def information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA 2 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) NEVER NULL
|
def information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA 2 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) NEVER NULL
|
||||||
@ -570,7 +570,7 @@ NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(
|
|||||||
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
3.0000 information_schema CHECK_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema CHECK_CONSTRAINTS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
3.0000 information_schema CHECK_CONSTRAINTS CHECK_CLAUSE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
1.0000 information_schema CHECK_CONSTRAINTS CHECK_CLAUSE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||||
3.0000 information_schema CLIENT_STATISTICS CLIENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
3.0000 information_schema CLIENT_STATISTICS CLIENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||||
NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
|
NULL information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
|
||||||
NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
|
NULL information_schema CLIENT_STATISTICS CONCURRENT_CONNECTIONS bigint NULL NULL NULL NULL bigint(21)
|
||||||
|
@ -91,9 +91,9 @@ TABLE_CATALOG def
|
|||||||
TABLE_SCHEMA information_schema
|
TABLE_SCHEMA information_schema
|
||||||
TABLE_NAME CHECK_CONSTRAINTS
|
TABLE_NAME CHECK_CONSTRAINTS
|
||||||
TABLE_TYPE SYSTEM VIEW
|
TABLE_TYPE SYSTEM VIEW
|
||||||
ENGINE MEMORY
|
ENGINE MYISAM_OR_MARIA
|
||||||
VERSION 11
|
VERSION 11
|
||||||
ROW_FORMAT Fixed
|
ROW_FORMAT DYNAMIC_OR_PAGE
|
||||||
TABLE_ROWS #TBLR#
|
TABLE_ROWS #TBLR#
|
||||||
AVG_ROW_LENGTH #ARL#
|
AVG_ROW_LENGTH #ARL#
|
||||||
DATA_LENGTH #DL#
|
DATA_LENGTH #DL#
|
||||||
@ -1157,9 +1157,9 @@ TABLE_CATALOG def
|
|||||||
TABLE_SCHEMA information_schema
|
TABLE_SCHEMA information_schema
|
||||||
TABLE_NAME CHECK_CONSTRAINTS
|
TABLE_NAME CHECK_CONSTRAINTS
|
||||||
TABLE_TYPE SYSTEM VIEW
|
TABLE_TYPE SYSTEM VIEW
|
||||||
ENGINE MEMORY
|
ENGINE MYISAM_OR_MARIA
|
||||||
VERSION 11
|
VERSION 11
|
||||||
ROW_FORMAT Fixed
|
ROW_FORMAT DYNAMIC_OR_PAGE
|
||||||
TABLE_ROWS #TBLR#
|
TABLE_ROWS #TBLR#
|
||||||
AVG_ROW_LENGTH #ARL#
|
AVG_ROW_LENGTH #ARL#
|
||||||
DATA_LENGTH #DL#
|
DATA_LENGTH #DL#
|
||||||
|
@ -91,9 +91,9 @@ TABLE_CATALOG def
|
|||||||
TABLE_SCHEMA information_schema
|
TABLE_SCHEMA information_schema
|
||||||
TABLE_NAME CHECK_CONSTRAINTS
|
TABLE_NAME CHECK_CONSTRAINTS
|
||||||
TABLE_TYPE SYSTEM VIEW
|
TABLE_TYPE SYSTEM VIEW
|
||||||
ENGINE MEMORY
|
ENGINE MYISAM_OR_MARIA
|
||||||
VERSION 11
|
VERSION 11
|
||||||
ROW_FORMAT Fixed
|
ROW_FORMAT DYNAMIC_OR_PAGE
|
||||||
TABLE_ROWS #TBLR#
|
TABLE_ROWS #TBLR#
|
||||||
AVG_ROW_LENGTH #ARL#
|
AVG_ROW_LENGTH #ARL#
|
||||||
DATA_LENGTH #DL#
|
DATA_LENGTH #DL#
|
||||||
@ -1157,9 +1157,9 @@ TABLE_CATALOG def
|
|||||||
TABLE_SCHEMA information_schema
|
TABLE_SCHEMA information_schema
|
||||||
TABLE_NAME CHECK_CONSTRAINTS
|
TABLE_NAME CHECK_CONSTRAINTS
|
||||||
TABLE_TYPE SYSTEM VIEW
|
TABLE_TYPE SYSTEM VIEW
|
||||||
ENGINE MEMORY
|
ENGINE MYISAM_OR_MARIA
|
||||||
VERSION 11
|
VERSION 11
|
||||||
ROW_FORMAT Fixed
|
ROW_FORMAT DYNAMIC_OR_PAGE
|
||||||
TABLE_ROWS #TBLR#
|
TABLE_ROWS #TBLR#
|
||||||
AVG_ROW_LENGTH #ARL#
|
AVG_ROW_LENGTH #ARL#
|
||||||
DATA_LENGTH #DL#
|
DATA_LENGTH #DL#
|
||||||
|
@ -69,7 +69,9 @@ CREATE TABLE t3
|
|||||||
(
|
(
|
||||||
a int,
|
a int,
|
||||||
b int check (b>0), # field constraint named 'b'
|
b int check (b>0), # field constraint named 'b'
|
||||||
CONSTRAINT b check (b>10) # table constraint
|
CONSTRAINT b check (b>10), # table constraint
|
||||||
|
# `CHECK_CLAUSE` should allow more then `var(64)` constraints
|
||||||
|
CONSTRAINT b1 check (b<123456789012345678901234567890123456789012345678901234567890123456789)
|
||||||
) ENGINE=InnoDB;
|
) ENGINE=InnoDB;
|
||||||
--sorted_result
|
--sorted_result
|
||||||
SELECT * from information_schema.check_constraints;
|
SELECT * from information_schema.check_constraints;
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
connection node_1;
|
||||||
|
connection node_2;
|
||||||
connection node_2;
|
connection node_2;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
|
@ -8,9 +8,10 @@
|
|||||||
--source include/galera_cluster.inc
|
--source include/galera_cluster.inc
|
||||||
--source include/galera_have_debug_sync.inc
|
--source include/galera_have_debug_sync.inc
|
||||||
|
|
||||||
|
# Save original auto_increment_offset values.
|
||||||
--let $node_1=node_1
|
--let $node_1=node_1
|
||||||
--let $node_2=node_2
|
--let $node_2=node_2
|
||||||
--source suite/galera/include/auto_increment_offset_save.inc
|
--source include/auto_increment_offset_save.inc
|
||||||
|
|
||||||
# Force node_2 gcomm background thread to terminate via exception.
|
# Force node_2 gcomm background thread to terminate via exception.
|
||||||
--connection node_2
|
--connection node_2
|
||||||
@ -41,4 +42,4 @@ SET SESSION wsrep_on=0;
|
|||||||
--connection node_2
|
--connection node_2
|
||||||
CALL mtr.add_suppression("WSREP: exception from gcomm, backend must be restarted: Gcomm backend termination was requested by setting gmcast.isolate=2.");
|
CALL mtr.add_suppression("WSREP: exception from gcomm, backend must be restarted: Gcomm backend termination was requested by setting gmcast.isolate=2.");
|
||||||
|
|
||||||
--source suite/galera/include/auto_increment_offset_restore.inc
|
--source include/auto_increment_offset_restore.inc
|
||||||
|
@ -790,3 +790,31 @@ t1 CREATE TABLE `t1` (
|
|||||||
ALTER TABLE t1 DROP INDEX f1;
|
ALTER TABLE t1 DROP INDEX f1;
|
||||||
ALTER TABLE t1 DROP f3;
|
ALTER TABLE t1 DROP f3;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-24041 Generated column DELETE with FOREIGN KEY crash InnoDB
|
||||||
|
#
|
||||||
|
CREATE TABLE emails (
|
||||||
|
id int,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE email_stats (
|
||||||
|
id int,
|
||||||
|
email_id int,
|
||||||
|
date_sent char(4),
|
||||||
|
generated_email_id int as (email_id),
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
KEY mautic_generated_sent_date_email_id (generated_email_id),
|
||||||
|
FOREIGN KEY (email_id) REFERENCES emails (id) ON DELETE SET NULL
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE emails_metadata (
|
||||||
|
email_id int,
|
||||||
|
PRIMARY KEY (email_id),
|
||||||
|
CONSTRAINT FK FOREIGN KEY (email_id) REFERENCES emails (id) ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
INSERT INTO emails VALUES (1);
|
||||||
|
INSERT INTO email_stats (id, email_id, date_sent) VALUES (1,1,'Jan');
|
||||||
|
INSERT INTO emails_metadata VALUES (1);
|
||||||
|
DELETE FROM emails;
|
||||||
|
DROP TABLE email_stats;
|
||||||
|
DROP TABLE emails_metadata;
|
||||||
|
DROP TABLE emails;
|
||||||
|
@ -649,3 +649,40 @@ SHOW CREATE TABLE t1;
|
|||||||
ALTER TABLE t1 DROP INDEX f1;
|
ALTER TABLE t1 DROP INDEX f1;
|
||||||
ALTER TABLE t1 DROP f3;
|
ALTER TABLE t1 DROP f3;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-24041 Generated column DELETE with FOREIGN KEY crash InnoDB
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE emails (
|
||||||
|
id int,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE email_stats (
|
||||||
|
id int,
|
||||||
|
email_id int,
|
||||||
|
date_sent char(4),
|
||||||
|
generated_email_id int as (email_id),
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
KEY mautic_generated_sent_date_email_id (generated_email_id),
|
||||||
|
FOREIGN KEY (email_id) REFERENCES emails (id) ON DELETE SET NULL
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE emails_metadata (
|
||||||
|
email_id int,
|
||||||
|
PRIMARY KEY (email_id),
|
||||||
|
CONSTRAINT FK FOREIGN KEY (email_id) REFERENCES emails (id) ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO emails VALUES (1);
|
||||||
|
INSERT INTO email_stats (id, email_id, date_sent) VALUES (1,1,'Jan');
|
||||||
|
INSERT INTO emails_metadata VALUES (1);
|
||||||
|
|
||||||
|
DELETE FROM emails;
|
||||||
|
|
||||||
|
DROP TABLE email_stats;
|
||||||
|
DROP TABLE emails_metadata;
|
||||||
|
DROP TABLE emails;
|
||||||
|
@ -81,4 +81,5 @@ CREATE TABLE t1(f1 INT) ENGINE=INNODB;
|
|||||||
INSERT INTO t1 VALUES(1);
|
INSERT INTO t1 VALUES(1);
|
||||||
UPDATE (SELECT ((SELECT 1 FROM t1), 1) FROM t1 WHERE (SELECT 1 FROM t1)) x, (SELECT 1) AS d SET d.f1 = 1;
|
UPDATE (SELECT ((SELECT 1 FROM t1), 1) FROM t1 WHERE (SELECT 1 FROM t1)) x, (SELECT 1) AS d SET d.f1 = 1;
|
||||||
ERROR 21000: Operand should contain 1 column(s)
|
ERROR 21000: Operand should contain 1 column(s)
|
||||||
|
UPDATE (SELECT ((SELECT 1 FROM t1),1) = (1,1) FROM t1 WHERE (SELECT 1 FROM t1)) x, t1 AS d SET d.f1 = 1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@ -35,4 +35,5 @@ CREATE TABLE t1(f1 INT) ENGINE=INNODB;
|
|||||||
INSERT INTO t1 VALUES(1);
|
INSERT INTO t1 VALUES(1);
|
||||||
--error ER_OPERAND_COLUMNS
|
--error ER_OPERAND_COLUMNS
|
||||||
UPDATE (SELECT ((SELECT 1 FROM t1), 1) FROM t1 WHERE (SELECT 1 FROM t1)) x, (SELECT 1) AS d SET d.f1 = 1;
|
UPDATE (SELECT ((SELECT 1 FROM t1), 1) FROM t1 WHERE (SELECT 1 FROM t1)) x, (SELECT 1) AS d SET d.f1 = 1;
|
||||||
|
UPDATE (SELECT ((SELECT 1 FROM t1),1) = (1,1) FROM t1 WHERE (SELECT 1 FROM t1)) x, t1 AS d SET d.f1 = 1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
@ -9,7 +9,6 @@ source include/have_innodb.inc;
|
|||||||
source include/master-slave.inc;
|
source include/master-slave.inc;
|
||||||
|
|
||||||
let $engine_type= InnoDB;
|
let $engine_type= InnoDB;
|
||||||
#let $engine_type= MyISAM;
|
|
||||||
|
|
||||||
# Suppress warnings that might be generated during the test
|
# Suppress warnings that might be generated during the test
|
||||||
connection master;
|
connection master;
|
||||||
@ -94,7 +93,6 @@ enable_query_log;
|
|||||||
echo [ status of semi-sync on master should be OFF ];
|
echo [ status of semi-sync on master should be OFF ];
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
show status like 'Rpl_semi_sync_master_clients';
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
show status like 'Rpl_semi_sync_master_status';
|
||||||
--replace_result 305 304
|
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
|
|
||||||
# reset master to make sure the following test will start with a clean environment
|
# reset master to make sure the following test will start with a clean environment
|
||||||
@ -201,16 +199,23 @@ connection slave;
|
|||||||
source include/stop_slave.inc;
|
source include/stop_slave.inc;
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
|
--source include/kill_binlog_dump_threads.inc
|
||||||
set global rpl_semi_sync_master_timeout= 5000;
|
set global rpl_semi_sync_master_timeout= 5000;
|
||||||
|
|
||||||
# The first semi-sync check should be on because after slave stop,
|
# The first semi-sync check should be on because after slave stop,
|
||||||
# there are no transactions on the master.
|
# there are no transactions on the master.
|
||||||
echo [ master status should be ON ];
|
echo [ master status should be ON ];
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
|
let $status_var= Rpl_semi_sync_master_status;
|
||||||
|
let $status_var_value= ON;
|
||||||
|
source include/wait_for_status_var.inc;
|
||||||
|
|
||||||
|
let $status_var= Rpl_semi_sync_master_clients;
|
||||||
|
let $status_var_value= 0;
|
||||||
|
source include/wait_for_status_var.inc;
|
||||||
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
--replace_result 305 304
|
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
|
|
||||||
echo [ semi-sync replication of these transactions will fail ];
|
echo [ semi-sync replication of these transactions will fail ];
|
||||||
insert into t1 values (500);
|
insert into t1 values (500);
|
||||||
@ -225,7 +230,6 @@ source include/wait_for_status_var.inc;
|
|||||||
echo [ master status should be OFF ];
|
echo [ master status should be OFF ];
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
show status like 'Rpl_semi_sync_master_status';
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
--replace_result 305 304
|
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
|
|
||||||
# Semi-sync status on master is now OFF, so all these transactions
|
# Semi-sync status on master is now OFF, so all these transactions
|
||||||
@ -246,7 +250,6 @@ insert into t1 values (100);
|
|||||||
echo [ master status should be OFF ];
|
echo [ master status should be OFF ];
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
show status like 'Rpl_semi_sync_master_status';
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
--replace_result 305 304
|
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
@ -274,9 +277,11 @@ connection master;
|
|||||||
|
|
||||||
# The master semi-sync status should be on again after slave catches up.
|
# The master semi-sync status should be on again after slave catches up.
|
||||||
echo [ master status should be ON again after slave catches up ];
|
echo [ master status should be ON again after slave catches up ];
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
|
let $status_var= Rpl_semi_sync_master_status;
|
||||||
|
let $status_var_value= ON;
|
||||||
|
source include/wait_for_status_var.inc;
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
--replace_result 305 304
|
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
show status like 'Rpl_semi_sync_master_clients';
|
||||||
|
|
||||||
@ -332,11 +337,7 @@ replace_result $engine_type ENGINE_TYPE;
|
|||||||
eval create table t1 (a int) engine = $engine_type;
|
eval create table t1 (a int) engine = $engine_type;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
##show status like 'Rpl_semi_sync_master_status';
|
|
||||||
|
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
--replace_column 2 #
|
|
||||||
show status like 'Rpl_relay%';
|
|
||||||
|
|
||||||
echo [ test reset master ];
|
echo [ test reset master ];
|
||||||
connection master;
|
connection master;
|
||||||
@ -353,19 +354,7 @@ source include/stop_slave.inc;
|
|||||||
reset slave;
|
reset slave;
|
||||||
|
|
||||||
# Kill the dump thread on master for previous slave connection and
|
# Kill the dump thread on master for previous slave connection and
|
||||||
# wait for it to exit
|
--source include/kill_binlog_dump_threads.inc
|
||||||
connection master;
|
|
||||||
let $_tid= `select id from information_schema.processlist where command = 'Binlog Dump' limit 1`;
|
|
||||||
if ($_tid)
|
|
||||||
{
|
|
||||||
--replace_result $_tid _tid
|
|
||||||
eval kill query $_tid;
|
|
||||||
|
|
||||||
# After dump thread exit, Rpl_semi_sync_master_clients will be 0
|
|
||||||
let $status_var= Rpl_semi_sync_master_clients;
|
|
||||||
let $status_var_value= 0;
|
|
||||||
source include/wait_for_status_var.inc;
|
|
||||||
}
|
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
source include/start_slave.inc;
|
source include/start_slave.inc;
|
||||||
@ -404,17 +393,7 @@ connection master;
|
|||||||
reset master;
|
reset master;
|
||||||
|
|
||||||
# Kill the dump thread on master for previous slave connection and wait for it to exit
|
# Kill the dump thread on master for previous slave connection and wait for it to exit
|
||||||
let $_tid= `select id from information_schema.processlist where command = 'Binlog Dump' limit 1`;
|
--source include/kill_binlog_dump_threads.inc
|
||||||
if ($_tid)
|
|
||||||
{
|
|
||||||
--replace_result $_tid _tid
|
|
||||||
eval kill query $_tid;
|
|
||||||
|
|
||||||
# After dump thread exit, Rpl_semi_sync_master_clients will be 0
|
|
||||||
let $status_var= Rpl_semi_sync_master_clients;
|
|
||||||
let $status_var_value= 0;
|
|
||||||
source include/wait_for_status_var.inc;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Do not binlog the following statement because it will generate
|
# Do not binlog the following statement because it will generate
|
||||||
# different events for ROW and STATEMENT format
|
# different events for ROW and STATEMENT format
|
||||||
@ -459,21 +438,16 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
|
|||||||
connection master;
|
connection master;
|
||||||
|
|
||||||
# Kill the dump thread on master for previous slave connection and wait for it to exit
|
# Kill the dump thread on master for previous slave connection and wait for it to exit
|
||||||
let $_tid= `select id from information_schema.processlist where command = 'Binlog Dump' limit 1`;
|
--source include/kill_binlog_dump_threads.inc
|
||||||
if ($_tid)
|
|
||||||
{
|
|
||||||
--replace_result $_tid _tid
|
|
||||||
eval kill query $_tid;
|
|
||||||
|
|
||||||
# After dump thread exit, Rpl_semi_sync_master_clients will be 0
|
|
||||||
let $status_var= Rpl_semi_sync_master_clients;
|
|
||||||
let $status_var_value= 0;
|
|
||||||
source include/wait_for_status_var.inc;
|
|
||||||
}
|
|
||||||
|
|
||||||
echo [ Semi-sync status on master should be ON ];
|
echo [ Semi-sync status on master should be ON ];
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
let $status_var= Rpl_semi_sync_master_clients;
|
||||||
|
let $status_var_value= 0;
|
||||||
|
source include/wait_for_status_var.inc;
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
show status like 'Rpl_semi_sync_master_status';
|
||||||
|
let $status_var= Rpl_semi_sync_master_status;
|
||||||
|
let $status_var_value= ON;
|
||||||
|
source include/wait_for_status_var.inc;
|
||||||
set global rpl_semi_sync_master_enabled= 0;
|
set global rpl_semi_sync_master_enabled= 0;
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
|
@ -164,20 +164,15 @@ connection slave;
|
|||||||
connection slave;
|
connection slave;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
connection master;
|
connection master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
set global rpl_semi_sync_master_timeout= 5000;
|
set global rpl_semi_sync_master_timeout= 5000;
|
||||||
[ master status should be ON ]
|
[ master status should be ON ]
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_status ON
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_no_tx 0
|
Rpl_semi_sync_master_no_tx 0
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_yes_tx 14
|
Rpl_semi_sync_master_yes_tx 14
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_clients 0
|
|
||||||
[ semi-sync replication of these transactions will fail ]
|
[ semi-sync replication of these transactions will fail ]
|
||||||
insert into t1 values (500);
|
insert into t1 values (500);
|
||||||
[ master status should be OFF ]
|
[ master status should be OFF ]
|
||||||
@ -235,9 +230,6 @@ max(a)
|
|||||||
500
|
500
|
||||||
connection master;
|
connection master;
|
||||||
[ master status should be ON again after slave catches up ]
|
[ master status should be ON again after slave catches up ]
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_status ON
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_no_tx 12
|
Rpl_semi_sync_master_no_tx 12
|
||||||
@ -304,8 +296,6 @@ connection master;
|
|||||||
create table t1 (a int) engine = ENGINE_TYPE;
|
create table t1 (a int) engine = ENGINE_TYPE;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
connection slave;
|
connection slave;
|
||||||
show status like 'Rpl_relay%';
|
|
||||||
Variable_name Value
|
|
||||||
[ test reset master ]
|
[ test reset master ]
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
@ -321,7 +311,7 @@ Rpl_semi_sync_master_yes_tx 0
|
|||||||
connection slave;
|
connection slave;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
reset slave;
|
reset slave;
|
||||||
connection master;
|
include/kill_binlog_dump_threads.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
include/start_slave.inc
|
include/start_slave.inc
|
||||||
connection master;
|
connection master;
|
||||||
@ -353,6 +343,7 @@ include/stop_slave.inc
|
|||||||
reset slave;
|
reset slave;
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
set sql_log_bin=0;
|
set sql_log_bin=0;
|
||||||
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
|
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
@ -403,10 +394,8 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_slave_status OFF
|
Rpl_semi_sync_slave_status OFF
|
||||||
connection master;
|
connection master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
[ Semi-sync status on master should be ON ]
|
[ Semi-sync status on master should be ON ]
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_clients 0
|
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
show status like 'Rpl_semi_sync_master_status';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_status ON
|
Rpl_semi_sync_master_status ON
|
||||||
|
@ -165,20 +165,15 @@ connection slave;
|
|||||||
connection slave;
|
connection slave;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
connection master;
|
connection master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
set global rpl_semi_sync_master_timeout= 5000;
|
set global rpl_semi_sync_master_timeout= 5000;
|
||||||
[ master status should be ON ]
|
[ master status should be ON ]
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_status ON
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_no_tx 0
|
Rpl_semi_sync_master_no_tx 0
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_yes_tx 16
|
Rpl_semi_sync_master_yes_tx 16
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_clients 0
|
|
||||||
[ semi-sync replication of these transactions will fail ]
|
[ semi-sync replication of these transactions will fail ]
|
||||||
insert into t1 values (500);
|
insert into t1 values (500);
|
||||||
[ master status should be OFF ]
|
[ master status should be OFF ]
|
||||||
@ -236,9 +231,6 @@ max(a)
|
|||||||
500
|
500
|
||||||
connection master;
|
connection master;
|
||||||
[ master status should be ON again after slave catches up ]
|
[ master status should be ON again after slave catches up ]
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_status ON
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_no_tx 12
|
Rpl_semi_sync_master_no_tx 12
|
||||||
@ -305,8 +297,6 @@ connection master;
|
|||||||
create table t1 (a int) engine = ENGINE_TYPE;
|
create table t1 (a int) engine = ENGINE_TYPE;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
connection slave;
|
connection slave;
|
||||||
show status like 'Rpl_relay%';
|
|
||||||
Variable_name Value
|
|
||||||
[ test reset master ]
|
[ test reset master ]
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
@ -322,7 +312,7 @@ Rpl_semi_sync_master_yes_tx 0
|
|||||||
connection slave;
|
connection slave;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
reset slave;
|
reset slave;
|
||||||
connection master;
|
include/kill_binlog_dump_threads.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
include/start_slave.inc
|
include/start_slave.inc
|
||||||
connection master;
|
connection master;
|
||||||
@ -354,6 +344,7 @@ include/stop_slave.inc
|
|||||||
reset slave;
|
reset slave;
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
set sql_log_bin=0;
|
set sql_log_bin=0;
|
||||||
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
|
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
@ -404,10 +395,8 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_slave_status OFF
|
Rpl_semi_sync_slave_status OFF
|
||||||
connection master;
|
connection master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
[ Semi-sync status on master should be ON ]
|
[ Semi-sync status on master should be ON ]
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_clients 0
|
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
show status like 'Rpl_semi_sync_master_status';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_status ON
|
Rpl_semi_sync_master_status ON
|
||||||
|
@ -165,20 +165,15 @@ connection slave;
|
|||||||
connection slave;
|
connection slave;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
connection master;
|
connection master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
set global rpl_semi_sync_master_timeout= 5000;
|
set global rpl_semi_sync_master_timeout= 5000;
|
||||||
[ master status should be ON ]
|
[ master status should be ON ]
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_status ON
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_no_tx 0
|
Rpl_semi_sync_master_no_tx 0
|
||||||
show status like 'Rpl_semi_sync_master_yes_tx';
|
show status like 'Rpl_semi_sync_master_yes_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_yes_tx 14
|
Rpl_semi_sync_master_yes_tx 14
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_clients 0
|
|
||||||
[ semi-sync replication of these transactions will fail ]
|
[ semi-sync replication of these transactions will fail ]
|
||||||
insert into t1 values (500);
|
insert into t1 values (500);
|
||||||
[ master status should be OFF ]
|
[ master status should be OFF ]
|
||||||
@ -236,9 +231,6 @@ max(a)
|
|||||||
500
|
500
|
||||||
connection master;
|
connection master;
|
||||||
[ master status should be ON again after slave catches up ]
|
[ master status should be ON again after slave catches up ]
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_status ON
|
|
||||||
show status like 'Rpl_semi_sync_master_no_tx';
|
show status like 'Rpl_semi_sync_master_no_tx';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_no_tx 12
|
Rpl_semi_sync_master_no_tx 12
|
||||||
@ -305,8 +297,6 @@ connection master;
|
|||||||
create table t1 (a int) engine = ENGINE_TYPE;
|
create table t1 (a int) engine = ENGINE_TYPE;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
connection slave;
|
connection slave;
|
||||||
show status like 'Rpl_relay%';
|
|
||||||
Variable_name Value
|
|
||||||
[ test reset master ]
|
[ test reset master ]
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
@ -322,7 +312,7 @@ Rpl_semi_sync_master_yes_tx 0
|
|||||||
connection slave;
|
connection slave;
|
||||||
include/stop_slave.inc
|
include/stop_slave.inc
|
||||||
reset slave;
|
reset slave;
|
||||||
connection master;
|
include/kill_binlog_dump_threads.inc
|
||||||
connection slave;
|
connection slave;
|
||||||
include/start_slave.inc
|
include/start_slave.inc
|
||||||
connection master;
|
connection master;
|
||||||
@ -354,6 +344,7 @@ include/stop_slave.inc
|
|||||||
reset slave;
|
reset slave;
|
||||||
connection master;
|
connection master;
|
||||||
reset master;
|
reset master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
set sql_log_bin=0;
|
set sql_log_bin=0;
|
||||||
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
|
grant replication slave on *.* to rpl@127.0.0.1 identified by 'rpl_password';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
@ -404,10 +395,8 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_slave_status OFF
|
Rpl_semi_sync_slave_status OFF
|
||||||
connection master;
|
connection master;
|
||||||
|
include/kill_binlog_dump_threads.inc
|
||||||
[ Semi-sync status on master should be ON ]
|
[ Semi-sync status on master should be ON ]
|
||||||
show status like 'Rpl_semi_sync_master_clients';
|
|
||||||
Variable_name Value
|
|
||||||
Rpl_semi_sync_master_clients 0
|
|
||||||
show status like 'Rpl_semi_sync_master_status';
|
show status like 'Rpl_semi_sync_master_status';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Rpl_semi_sync_master_status ON
|
Rpl_semi_sync_master_status ON
|
||||||
|
@ -436,6 +436,9 @@ SET @@DEBUG_SYNC='now SIGNAL proceed_by_1000';
|
|||||||
--connection spoiler_21
|
--connection spoiler_21
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
|
|
||||||
|
--let $wait_condition= SELECT count(*)=1 FROM information_schema.processlist WHERE state LIKE '%debug sync point%';
|
||||||
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--echo # Release the 2nd worker to proceed
|
--echo # Release the 2nd worker to proceed
|
||||||
--connection spoiler_22
|
--connection spoiler_22
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
|
@ -1,199 +0,0 @@
|
|||||||
SET @start_global_value = @@global.max_sort_length;
|
|
||||||
SELECT @start_global_value;
|
|
||||||
@start_global_value
|
|
||||||
1024
|
|
||||||
SET @start_session_value = @@session.max_sort_length;
|
|
||||||
SELECT @start_session_value;
|
|
||||||
@start_session_value
|
|
||||||
1024
|
|
||||||
'#--------------------FN_DYNVARS_084_01-------------------------#'
|
|
||||||
SET @@global.max_sort_length = 1000;
|
|
||||||
SET @@global.max_sort_length = DEFAULT;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
1024
|
|
||||||
SET @@session.max_sort_length = 1000;
|
|
||||||
SET @@session.max_sort_length = DEFAULT;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
1024
|
|
||||||
'#--------------------FN_DYNVARS_084_02-------------------------#'
|
|
||||||
SET @@global.max_sort_length = DEFAULT;
|
|
||||||
SELECT @@global.max_sort_length = 1024;
|
|
||||||
@@global.max_sort_length = 1024
|
|
||||||
1
|
|
||||||
SET @@session.max_sort_length = DEFAULT;
|
|
||||||
SELECT @@session.max_sort_length = 1024;
|
|
||||||
@@session.max_sort_length = 1024
|
|
||||||
1
|
|
||||||
'#--------------------FN_DYNVARS_084_03-------------------------#'
|
|
||||||
SET @@global.max_sort_length = 8;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@global.max_sort_length = 9;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
9
|
|
||||||
SET @@global.max_sort_length = 8388608;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8388608
|
|
||||||
SET @@global.max_sort_length = 8388607;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8388607
|
|
||||||
SET @@global.max_sort_length = 65536;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
65536
|
|
||||||
'#--------------------FN_DYNVARS_084_04-------------------------#'
|
|
||||||
SET @@session.max_sort_length = 8;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@session.max_sort_length = 9;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
9
|
|
||||||
SET @@session.max_sort_length = 8388608;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8388608
|
|
||||||
SET @@session.max_sort_length = 8388607;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8388607
|
|
||||||
SET @@session.max_sort_length = 65536;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
65536
|
|
||||||
'#------------------FN_DYNVARS_084_05-----------------------#'
|
|
||||||
SET @@global.max_sort_length = -1024;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '-1024'
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@global.max_sort_length = 3;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '3'
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@global.max_sort_length = 8388609;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '8388609'
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8388608
|
|
||||||
SET @@global.max_sort_length = 0;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '0'
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@global.max_sort_length = 65530.34;
|
|
||||||
ERROR 42000: Incorrect argument type to variable 'max_sort_length'
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@global.max_sort_length = test;
|
|
||||||
ERROR 42000: Incorrect argument type to variable 'max_sort_length'
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@session.max_sort_length = 8388610;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '8388610'
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8388608
|
|
||||||
SET @@session.max_sort_length = -1;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '-1'
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@session.max_sort_length = 3;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '3'
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@session.max_sort_length = 0;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '0'
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@session.max_sort_length = 65530.34;
|
|
||||||
ERROR 42000: Incorrect argument type to variable 'max_sort_length'
|
|
||||||
SET @@session.max_sort_length = 10737418241;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '10737418241'
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8388608
|
|
||||||
SET @@session.max_sort_length = test;
|
|
||||||
ERROR 42000: Incorrect argument type to variable 'max_sort_length'
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
8388608
|
|
||||||
'#------------------FN_DYNVARS_084_06-----------------------#'
|
|
||||||
SELECT @@global.max_sort_length = VARIABLE_VALUE
|
|
||||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
|
||||||
WHERE VARIABLE_NAME='max_sort_length';
|
|
||||||
@@global.max_sort_length = VARIABLE_VALUE
|
|
||||||
1
|
|
||||||
'#------------------FN_DYNVARS_084_07-----------------------#'
|
|
||||||
SELECT @@session.max_sort_length = VARIABLE_VALUE
|
|
||||||
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
|
|
||||||
WHERE VARIABLE_NAME='max_sort_length';
|
|
||||||
@@session.max_sort_length = VARIABLE_VALUE
|
|
||||||
1
|
|
||||||
'#------------------FN_DYNVARS_084_08-----------------------#'
|
|
||||||
SET @@global.max_sort_length = TRUE;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '1'
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8
|
|
||||||
SET @@global.max_sort_length = FALSE;
|
|
||||||
Warnings:
|
|
||||||
Warning 1292 Truncated incorrect max_sort_length value: '0'
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
8
|
|
||||||
'#---------------------FN_DYNVARS_084_09----------------------#'
|
|
||||||
SET @@global.max_sort_length = 2048;
|
|
||||||
SELECT @@max_sort_length = @@global.max_sort_length;
|
|
||||||
@@max_sort_length = @@global.max_sort_length
|
|
||||||
0
|
|
||||||
'#---------------------FN_DYNVARS_084_10----------------------#'
|
|
||||||
SET @@max_sort_length = 100000;
|
|
||||||
SELECT @@max_sort_length = @@local.max_sort_length;
|
|
||||||
@@max_sort_length = @@local.max_sort_length
|
|
||||||
1
|
|
||||||
SELECT @@local.max_sort_length = @@session.max_sort_length;
|
|
||||||
@@local.max_sort_length = @@session.max_sort_length
|
|
||||||
1
|
|
||||||
'#---------------------FN_DYNVARS_084_11----------------------#'
|
|
||||||
SET max_sort_length = 1024;
|
|
||||||
SELECT @@max_sort_length;
|
|
||||||
@@max_sort_length
|
|
||||||
1024
|
|
||||||
SELECT local.max_sort_length;
|
|
||||||
ERROR 42S02: Unknown table 'local' in field list
|
|
||||||
SELECT session.max_sort_length;
|
|
||||||
ERROR 42S02: Unknown table 'session' in field list
|
|
||||||
SELECT max_sort_length = @@session.max_sort_length;
|
|
||||||
ERROR 42S22: Unknown column 'max_sort_length' in 'field list'
|
|
||||||
SET @@global.max_sort_length = @start_global_value;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
@@global.max_sort_length
|
|
||||||
1024
|
|
||||||
SET @@session.max_sort_length = @start_session_value;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
@@session.max_sort_length
|
|
||||||
1024
|
|
@ -1,301 +1,279 @@
|
|||||||
SET @start_value= @@global.max_sort_length;
|
SET @start_value= @@global.max_sort_length;
|
||||||
SET @session_max_sort_length = @@Session.max_sort_length;
|
|
||||||
DROP TABLE IF EXISTS t;
|
|
||||||
** creating tables **
|
** creating tables **
|
||||||
CREATE TABLE t
|
CREATE TABLE t (id INT AUTO_INCREMENT PRIMARY KEY, c TEXT);
|
||||||
(
|
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY, c BLOB);
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
CREATE TABLE t2 (id INT AUTO_INCREMENT PRIMARY KEY, c TEXT);
|
||||||
c TEXT(30)
|
|
||||||
);
|
|
||||||
CREATE TABLE t1
|
|
||||||
(
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
c BLOB(30)
|
|
||||||
);
|
|
||||||
CREATE TABLE t2
|
|
||||||
(
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
c TEXT(30)
|
|
||||||
);
|
|
||||||
'#--------------------FN_DYNVARS_098_01-------------------------#'
|
'#--------------------FN_DYNVARS_098_01-------------------------#'
|
||||||
connect test_con1,localhost,root,,;
|
connect test_con1,localhost,root,,;
|
||||||
connection test_con1;
|
** Setting value to 70 and inserting data **
|
||||||
SELECT @@global.max_sort_length = 10;
|
SET @@global.max_sort_length = 70;
|
||||||
@@global.max_sort_length = 10
|
|
||||||
0
|
|
||||||
SELECT @@session.max_sort_length = 10;
|
|
||||||
@@session.max_sort_length = 10
|
|
||||||
0
|
|
||||||
** Setting value to 30 and inserting data **
|
|
||||||
SET @@global.max_sort_length = 30;
|
|
||||||
SELECT @@global.max_sort_length;
|
SELECT @@global.max_sort_length;
|
||||||
@@global.max_sort_length
|
@@global.max_sort_length
|
||||||
30
|
70
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
** Results should be sorted **
|
** Results should be sorted **
|
||||||
SET @@session.max_sort_length = 29;
|
SET @@session.max_sort_length = 69;
|
||||||
SELECT @@session.max_sort_length;
|
SELECT @@session.max_sort_length;
|
||||||
@@session.max_sort_length
|
@@session.max_sort_length
|
||||||
29
|
69
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
** Results should be sorted **
|
** Results should be sorted **
|
||||||
'#--------------------FN_DYNVARS_098_02-------------------------#'
|
'#--------------------FN_DYNVARS_098_02-------------------------#'
|
||||||
connect test_con2,localhost,root,,;
|
connect test_con2,localhost,root,,;
|
||||||
connection test_con2;
|
SET @@global.max_sort_length = 70;
|
||||||
SET @@global.max_sort_length = 30;
|
|
||||||
SELECT @@global.max_sort_length;
|
SELECT @@global.max_sort_length;
|
||||||
@@global.max_sort_length
|
@@global.max_sort_length
|
||||||
30
|
70
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
** Results should be sorted **
|
** Results should be sorted **
|
||||||
SET @@session.max_sort_length = 20;
|
SET @@session.max_sort_length = 64;
|
||||||
SELECT @@session.max_sort_length;
|
SELECT @@session.max_sort_length;
|
||||||
@@session.max_sort_length
|
@@session.max_sort_length
|
||||||
20
|
64
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
** Results should not be sorted **
|
** Results should not be sorted **
|
||||||
'#--------------------FN_DYNVARS_098_03-------------------------#'
|
'#--------------------FN_DYNVARS_098_03-------------------------#'
|
||||||
SET max_sort_length=20;
|
SET max_sort_length=64;
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
** Results should not be sorted **
|
** Results should not be sorted **
|
||||||
RESET QUERY CACHE;
|
RESET QUERY CACHE;
|
||||||
'#--------------------FN_DYNVARS_098_04-------------------------#'
|
'#--------------------FN_DYNVARS_098_04-------------------------#'
|
||||||
SET max_sort_length=29;
|
SET max_sort_length=69;
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
** Results should be sorted **
|
** Results should be sorted **
|
||||||
'#--------------------FN_DYNVARS_098_05-------------------------#'
|
'#--------------------FN_DYNVARS_098_05-------------------------#'
|
||||||
SET max_sort_length=30;
|
SET max_sort_length=70;
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
** Results should be sorted **
|
** Results should be sorted **
|
||||||
'#--------------------FN_DYNVARS_098_06-------------------------#'
|
'#--------------------FN_DYNVARS_098_06-------------------------#'
|
||||||
SET max_sort_length=default;
|
SET max_sort_length=default;
|
||||||
|
SELECT @@max_sort_length;
|
||||||
|
@@max_sort_length
|
||||||
|
70
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
** Results should be sorted **
|
** Results should be sorted **
|
||||||
'#--------------------FN_DYNVARS_098_07-------------------------#'
|
'#--------------------FN_DYNVARS_098_07-------------------------#'
|
||||||
Testing type BLOB
|
Testing type BLOB
|
||||||
SET @@global.max_sort_length = 30;
|
SET @@max_sort_length = 70;
|
||||||
SELECT @@global.max_sort_length;
|
SELECT @@max_sort_length;
|
||||||
@@global.max_sort_length
|
@@max_sort_length
|
||||||
30
|
70
|
||||||
INSERT INTO t1 set c = repeat('x',29);
|
INSERT INTO t1 set c = repeat('x',69);
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t1 set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t1 set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t1 set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t1 ORDER BY c, id;
|
SELECT c from t1 ORDER BY c, id DESC;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
** Results should be sorted **
|
** Results should be sorted **
|
||||||
SET @@session.max_sort_length = 20;
|
SET @@session.max_sort_length = 64;
|
||||||
SELECT @@session.max_sort_length;
|
SELECT @@session.max_sort_length;
|
||||||
@@session.max_sort_length
|
@@session.max_sort_length
|
||||||
20
|
64
|
||||||
INSERT INTO t1 set c = repeat('x',29);
|
INSERT INTO t1 set c = repeat('x',69);
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t1 set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t1 set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t1 set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t1 ORDER BY c, id;
|
SELECT c from t1 ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
** Results should not be sorted **
|
** Results should not be sorted **
|
||||||
'#--------------------FN_DYNVARS_098_08-------------------------#'
|
'#--------------------FN_DYNVARS_098_08-------------------------#'
|
||||||
Testing type CHAR
|
Testing type CHAR
|
||||||
SET @@global.max_sort_length = 30;
|
SET @@global.max_sort_length = 70;
|
||||||
SELECT @@global.max_sort_length;
|
SELECT @@global.max_sort_length;
|
||||||
@@global.max_sort_length
|
@@global.max_sort_length
|
||||||
30
|
70
|
||||||
INSERT INTO t2 set c = repeat('x',29);
|
INSERT INTO t2 set c = repeat('x',69);
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t2 set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t2 set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t2 set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t2 ORDER BY c, id;
|
SELECT c from t2 ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
** Results should not be sorted **
|
** Results should not be sorted **
|
||||||
SET @@session.max_sort_length = 20;
|
SET @@session.max_sort_length = 64;
|
||||||
SELECT @@session.max_sort_length;
|
SELECT @@session.max_sort_length;
|
||||||
@@session.max_sort_length
|
@@session.max_sort_length
|
||||||
20
|
64
|
||||||
INSERT INTO t2 set c = repeat('x',29);
|
INSERT INTO t2 set c = repeat('x',69);
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t2 set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t2 set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t2 set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t2 ORDER BY c, id;
|
SELECT c from t2 ORDER BY c, id;
|
||||||
c
|
c
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxsy
|
||||||
xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxgw
|
||||||
** Results should not be sorted **
|
** Results should not be sorted **
|
||||||
connection default;
|
connection default;
|
||||||
disconnect test_con1;
|
disconnect test_con1;
|
||||||
disconnect test_con2;
|
disconnect test_con2;
|
||||||
SET @@SESSION.max_sort_length = @session_max_sort_length;
|
DROP TABLE t, t1, t2;
|
||||||
DROP TABLE IF EXISTS t;
|
|
||||||
DROP TABLE IF EXISTS t1;
|
|
||||||
DROP TABLE IF EXISTS t2;
|
|
||||||
SET @@global.max_sort_length= @start_value;
|
SET @@global.max_sort_length= @start_value;
|
||||||
|
@ -1044,10 +1044,10 @@ READ_ONLY NO
|
|||||||
COMMAND_LINE_ARGUMENT REQUIRED
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
VARIABLE_NAME GROUP_CONCAT_MAX_LEN
|
VARIABLE_NAME GROUP_CONCAT_MAX_LEN
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE BIGINT UNSIGNED
|
VARIABLE_TYPE INT UNSIGNED
|
||||||
VARIABLE_COMMENT The maximum length of the result of function GROUP_CONCAT()
|
VARIABLE_COMMENT The maximum length of the result of function GROUP_CONCAT()
|
||||||
NUMERIC_MIN_VALUE 4
|
NUMERIC_MIN_VALUE 4
|
||||||
NUMERIC_MAX_VALUE 18446744073709551615
|
NUMERIC_MAX_VALUE 4294967295
|
||||||
NUMERIC_BLOCK_SIZE 1
|
NUMERIC_BLOCK_SIZE 1
|
||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
@ -1946,7 +1946,7 @@ VARIABLE_NAME MAX_SORT_LENGTH
|
|||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE BIGINT UNSIGNED
|
VARIABLE_TYPE BIGINT UNSIGNED
|
||||||
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
|
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
|
||||||
NUMERIC_MIN_VALUE 8
|
NUMERIC_MIN_VALUE 64
|
||||||
NUMERIC_MAX_VALUE 8388608
|
NUMERIC_MAX_VALUE 8388608
|
||||||
NUMERIC_BLOCK_SIZE 1
|
NUMERIC_BLOCK_SIZE 1
|
||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
|
@ -1064,10 +1064,10 @@ READ_ONLY NO
|
|||||||
COMMAND_LINE_ARGUMENT REQUIRED
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
VARIABLE_NAME GROUP_CONCAT_MAX_LEN
|
VARIABLE_NAME GROUP_CONCAT_MAX_LEN
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE BIGINT UNSIGNED
|
VARIABLE_TYPE INT UNSIGNED
|
||||||
VARIABLE_COMMENT The maximum length of the result of function GROUP_CONCAT()
|
VARIABLE_COMMENT The maximum length of the result of function GROUP_CONCAT()
|
||||||
NUMERIC_MIN_VALUE 4
|
NUMERIC_MIN_VALUE 4
|
||||||
NUMERIC_MAX_VALUE 18446744073709551615
|
NUMERIC_MAX_VALUE 4294967295
|
||||||
NUMERIC_BLOCK_SIZE 1
|
NUMERIC_BLOCK_SIZE 1
|
||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
@ -2106,7 +2106,7 @@ VARIABLE_NAME MAX_SORT_LENGTH
|
|||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE BIGINT UNSIGNED
|
VARIABLE_TYPE BIGINT UNSIGNED
|
||||||
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
|
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
|
||||||
NUMERIC_MIN_VALUE 8
|
NUMERIC_MIN_VALUE 64
|
||||||
NUMERIC_MAX_VALUE 8388608
|
NUMERIC_MAX_VALUE 8388608
|
||||||
NUMERIC_BLOCK_SIZE 1
|
NUMERIC_BLOCK_SIZE 1
|
||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
|
@ -1,225 +0,0 @@
|
|||||||
############## mysql-test\t\max_sort_length_basic.test ###############
|
|
||||||
# #
|
|
||||||
# Variable Name: max_sort_length #
|
|
||||||
# Scope: GLOBAL | SESSION #
|
|
||||||
# Access Type: Dynamic #
|
|
||||||
# Data Type: numeric #
|
|
||||||
# Default Value: 1024 #
|
|
||||||
# Range: 4-8388608 #
|
|
||||||
# #
|
|
||||||
# #
|
|
||||||
# Creation Date: 2008-02-07 #
|
|
||||||
# Author: Salman #
|
|
||||||
# #
|
|
||||||
# Description: Test Cases of Dynamic System Variable max_sort_length #
|
|
||||||
# that checks the behavior of this variable in the following ways#
|
|
||||||
# * Default Value #
|
|
||||||
# * Valid & Invalid values #
|
|
||||||
# * Scope & Access method #
|
|
||||||
# * Data Integrity #
|
|
||||||
# #
|
|
||||||
# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
|
|
||||||
# server-system-variables.html #
|
|
||||||
# #
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
--source include/load_sysvars.inc
|
|
||||||
|
|
||||||
|
|
||||||
############################################
|
|
||||||
# START OF max_sort_length TESTS #
|
|
||||||
############################################
|
|
||||||
|
|
||||||
|
|
||||||
#############################################################
|
|
||||||
# Save initial value #
|
|
||||||
#############################################################
|
|
||||||
|
|
||||||
SET @start_global_value = @@global.max_sort_length;
|
|
||||||
SELECT @start_global_value;
|
|
||||||
SET @start_session_value = @@session.max_sort_length;
|
|
||||||
SELECT @start_session_value;
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_084_01-------------------------#'
|
|
||||||
#######################################################
|
|
||||||
# Display the DEFAULT value of max_sort_length #
|
|
||||||
#######################################################
|
|
||||||
|
|
||||||
SET @@global.max_sort_length = 1000;
|
|
||||||
SET @@global.max_sort_length = DEFAULT;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
SET @@session.max_sort_length = 1000;
|
|
||||||
SET @@session.max_sort_length = DEFAULT;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_084_02-------------------------#'
|
|
||||||
#######################################################
|
|
||||||
# Check the DEFAULT value of max_sort_length #
|
|
||||||
#######################################################
|
|
||||||
|
|
||||||
SET @@global.max_sort_length = DEFAULT;
|
|
||||||
SELECT @@global.max_sort_length = 1024;
|
|
||||||
|
|
||||||
SET @@session.max_sort_length = DEFAULT;
|
|
||||||
SELECT @@session.max_sort_length = 1024;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_084_03-------------------------#'
|
|
||||||
#########################################################################
|
|
||||||
# Change the value of max_sort_length to a valid value for GLOBAL Scope #
|
|
||||||
#########################################################################
|
|
||||||
|
|
||||||
SET @@global.max_sort_length = 8;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@global.max_sort_length = 9;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@global.max_sort_length = 8388608;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@global.max_sort_length = 8388607;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@global.max_sort_length = 65536;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_084_04-------------------------#'
|
|
||||||
##########################################################################
|
|
||||||
# Change the value of max_sort_length to a valid value for SESSION Scope #
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
SET @@session.max_sort_length = 8;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
|
|
||||||
SET @@session.max_sort_length = 9;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
|
|
||||||
SET @@session.max_sort_length = 8388608;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
|
|
||||||
SET @@session.max_sort_length = 8388607;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
|
|
||||||
SET @@session.max_sort_length = 65536;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#------------------FN_DYNVARS_084_05-----------------------#'
|
|
||||||
###########################################################
|
|
||||||
# Change the value of max_sort_length to an invalid value #
|
|
||||||
###########################################################
|
|
||||||
|
|
||||||
SET @@global.max_sort_length = -1024;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@global.max_sort_length = 3;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@global.max_sort_length = 8388609;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@global.max_sort_length = 0;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
--Error ER_WRONG_TYPE_FOR_VAR
|
|
||||||
SET @@global.max_sort_length = 65530.34;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
--Error ER_WRONG_TYPE_FOR_VAR
|
|
||||||
SET @@global.max_sort_length = test;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
|
|
||||||
SET @@session.max_sort_length = 8388610;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
SET @@session.max_sort_length = -1;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
SET @@session.max_sort_length = 3;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
SET @@session.max_sort_length = 0;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
--Error ER_WRONG_TYPE_FOR_VAR
|
|
||||||
SET @@session.max_sort_length = 65530.34;
|
|
||||||
SET @@session.max_sort_length = 10737418241;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
--Error ER_WRONG_TYPE_FOR_VAR
|
|
||||||
SET @@session.max_sort_length = test;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#------------------FN_DYNVARS_084_06-----------------------#'
|
|
||||||
####################################################################
|
|
||||||
# Check if the value in GLOBAL Table matches value in variable #
|
|
||||||
####################################################################
|
|
||||||
|
|
||||||
|
|
||||||
SELECT @@global.max_sort_length = VARIABLE_VALUE
|
|
||||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
|
||||||
WHERE VARIABLE_NAME='max_sort_length';
|
|
||||||
|
|
||||||
--echo '#------------------FN_DYNVARS_084_07-----------------------#'
|
|
||||||
####################################################################
|
|
||||||
# Check if the value in SESSION Table matches value in variable #
|
|
||||||
####################################################################
|
|
||||||
|
|
||||||
SELECT @@session.max_sort_length = VARIABLE_VALUE
|
|
||||||
FROM INFORMATION_SCHEMA.SESSION_VARIABLES
|
|
||||||
WHERE VARIABLE_NAME='max_sort_length';
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#------------------FN_DYNVARS_084_08-----------------------#'
|
|
||||||
####################################################################
|
|
||||||
# Check if TRUE and FALSE values can be used on variable #
|
|
||||||
####################################################################
|
|
||||||
|
|
||||||
SET @@global.max_sort_length = TRUE;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@global.max_sort_length = FALSE;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#---------------------FN_DYNVARS_084_09----------------------#'
|
|
||||||
#################################################################################
|
|
||||||
# Check if accessing variable with and without GLOBAL point to same variable #
|
|
||||||
#################################################################################
|
|
||||||
|
|
||||||
SET @@global.max_sort_length = 2048;
|
|
||||||
SELECT @@max_sort_length = @@global.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#---------------------FN_DYNVARS_084_10----------------------#'
|
|
||||||
########################################################################################################
|
|
||||||
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable #
|
|
||||||
########################################################################################################
|
|
||||||
|
|
||||||
SET @@max_sort_length = 100000;
|
|
||||||
SELECT @@max_sort_length = @@local.max_sort_length;
|
|
||||||
SELECT @@local.max_sort_length = @@session.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#---------------------FN_DYNVARS_084_11----------------------#'
|
|
||||||
##########################################################################
|
|
||||||
# Check if max_sort_length can be accessed with and without @@ sign #
|
|
||||||
##########################################################################
|
|
||||||
|
|
||||||
|
|
||||||
SET max_sort_length = 1024;
|
|
||||||
SELECT @@max_sort_length;
|
|
||||||
--Error ER_UNKNOWN_TABLE
|
|
||||||
SELECT local.max_sort_length;
|
|
||||||
--Error ER_UNKNOWN_TABLE
|
|
||||||
SELECT session.max_sort_length;
|
|
||||||
--Error ER_BAD_FIELD_ERROR
|
|
||||||
SELECT max_sort_length = @@session.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
####################################
|
|
||||||
# Restore initial value #
|
|
||||||
####################################
|
|
||||||
|
|
||||||
SET @@global.max_sort_length = @start_global_value;
|
|
||||||
SELECT @@global.max_sort_length;
|
|
||||||
SET @@session.max_sort_length = @start_session_value;
|
|
||||||
SELECT @@session.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
####################################################
|
|
||||||
# END OF max_sort_length TESTS #
|
|
||||||
####################################################
|
|
||||||
|
|
@ -26,70 +26,40 @@
|
|||||||
|
|
||||||
SET @start_value= @@global.max_sort_length;
|
SET @start_value= @@global.max_sort_length;
|
||||||
|
|
||||||
SET @session_max_sort_length = @@Session.max_sort_length;
|
|
||||||
|
|
||||||
|
|
||||||
--disable_warnings
|
|
||||||
DROP TABLE IF EXISTS t;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
# Creating new table #
|
# Creating new table #
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
|
|
||||||
--echo ** creating tables **
|
--echo ** creating tables **
|
||||||
CREATE TABLE t
|
CREATE TABLE t (id INT AUTO_INCREMENT PRIMARY KEY, c TEXT);
|
||||||
(
|
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY, c BLOB);
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
CREATE TABLE t2 (id INT AUTO_INCREMENT PRIMARY KEY, c TEXT);
|
||||||
c TEXT(30)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE t1
|
|
||||||
(
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
c BLOB(30)
|
|
||||||
);
|
|
||||||
|
|
||||||
CREATE TABLE t2
|
|
||||||
(
|
|
||||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
c TEXT(30)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_098_01-------------------------#'
|
--echo '#--------------------FN_DYNVARS_098_01-------------------------#'
|
||||||
##########################################################
|
##########################################################
|
||||||
# Test behavior of variable on new connection # 01 #
|
# Test behavior of variable on new connection # 01 #
|
||||||
##########################################################
|
##########################################################
|
||||||
|
|
||||||
|
|
||||||
connect (test_con1,localhost,root,,);
|
connect (test_con1,localhost,root,,);
|
||||||
connection test_con1;
|
|
||||||
|
|
||||||
# Value of session & global vairable here should be 10
|
|
||||||
SELECT @@global.max_sort_length = 10;
|
|
||||||
SELECT @@session.max_sort_length = 10;
|
|
||||||
|
|
||||||
# Setting global value of variable and inserting data in table
|
# Setting global value of variable and inserting data in table
|
||||||
--echo ** Setting value to 30 and inserting data **
|
--echo ** Setting value to 70 and inserting data **
|
||||||
SET @@global.max_sort_length = 30;
|
SET @@global.max_sort_length = 70;
|
||||||
SELECT @@global.max_sort_length;
|
SELECT @@global.max_sort_length;
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
--echo ** Results should be sorted **
|
--echo ** Results should be sorted **
|
||||||
|
|
||||||
# Setting session value of variable and inserting data in table
|
# Setting session value of variable and inserting data in table
|
||||||
SET @@session.max_sort_length = 29;
|
SET @@session.max_sort_length = 69;
|
||||||
SELECT @@session.max_sort_length;
|
SELECT @@session.max_sort_length;
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
--echo ** Results should be sorted **
|
--echo ** Results should be sorted **
|
||||||
|
|
||||||
@ -99,72 +69,69 @@ SELECT c from t ORDER BY c, id;
|
|||||||
##########################################################
|
##########################################################
|
||||||
|
|
||||||
connect (test_con2,localhost,root,,);
|
connect (test_con2,localhost,root,,);
|
||||||
connection test_con2;
|
|
||||||
|
|
||||||
|
|
||||||
## Setting global value of variable and inserting data in table
|
## Setting global value of variable and inserting data in table
|
||||||
SET @@global.max_sort_length = 30;
|
SET @@global.max_sort_length = 70;
|
||||||
SELECT @@global.max_sort_length;
|
SELECT @@global.max_sort_length;
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
|
|
||||||
--echo ** Results should be sorted **
|
--echo ** Results should be sorted **
|
||||||
|
|
||||||
# Setting session value of variable and inserting data in table
|
# Setting session value of variable and inserting data in table
|
||||||
SET @@session.max_sort_length = 20;
|
SET @@session.max_sort_length = 64;
|
||||||
SELECT @@session.max_sort_length;
|
SELECT @@session.max_sort_length;
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
|
|
||||||
--echo ** Results should not be sorted **
|
--echo ** Results should not be sorted **
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_098_03-------------------------#'
|
--echo '#--------------------FN_DYNVARS_098_03-------------------------#'
|
||||||
#########################################################
|
#########################################################
|
||||||
#Check if sorting is applied with the max_sort_length=20#
|
#Check if sorting is applied with the max_sort_length=64#
|
||||||
#########################################################
|
#########################################################
|
||||||
|
|
||||||
###########################################
|
###########################################
|
||||||
# Setting new value for max_sort_length #
|
# Setting new value for max_sort_length #
|
||||||
###########################################
|
###########################################
|
||||||
|
|
||||||
SET max_sort_length=20;
|
SET max_sort_length=64;
|
||||||
|
|
||||||
###################################
|
###################################
|
||||||
# Inserting values in table t #
|
# Inserting values in table t #
|
||||||
###################################
|
###################################
|
||||||
|
|
||||||
INSERT INTO t set c = repeat('x',29);
|
INSERT INTO t set c = repeat('x',69);
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t set c = concat(repeat('x',68),'g','w');
|
||||||
|
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
--echo ** Results should not be sorted **
|
--echo ** Results should not be sorted **
|
||||||
|
|
||||||
RESET QUERY CACHE;
|
RESET QUERY CACHE;
|
||||||
|
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_098_04-------------------------#'
|
--echo '#--------------------FN_DYNVARS_098_04-------------------------#'
|
||||||
#########################################################
|
#########################################################
|
||||||
#Check if sorting is applied with the max_sort_length=29#
|
#Check if sorting is applied with the max_sort_length=69#
|
||||||
#########################################################
|
#########################################################
|
||||||
|
|
||||||
SET max_sort_length=29;
|
SET max_sort_length=69;
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
--echo ** Results should be sorted **
|
--echo ** Results should be sorted **
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_098_05-------------------------#'
|
--echo '#--------------------FN_DYNVARS_098_05-------------------------#'
|
||||||
#########################################################
|
#########################################################
|
||||||
#Check if sorting is applied with the max_sort_length=30#
|
#Check if sorting is applied with the max_sort_length=70#
|
||||||
#########################################################
|
#########################################################
|
||||||
|
|
||||||
SET max_sort_length=30;
|
SET max_sort_length=70;
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
--echo ** Results should be sorted **
|
--echo ** Results should be sorted **
|
||||||
|
|
||||||
@ -173,34 +140,33 @@ SELECT c from t ORDER BY c, id;
|
|||||||
#Check if sorting is applied with the max_sort_length=Default#
|
#Check if sorting is applied with the max_sort_length=Default#
|
||||||
##############################################################
|
##############################################################
|
||||||
|
|
||||||
|
|
||||||
SET max_sort_length=default;
|
SET max_sort_length=default;
|
||||||
|
SELECT @@max_sort_length;
|
||||||
SELECT c from t ORDER BY c, id;
|
SELECT c from t ORDER BY c, id;
|
||||||
--echo ** Results should be sorted **
|
--echo ** Results should be sorted **
|
||||||
|
|
||||||
|
|
||||||
--echo '#--------------------FN_DYNVARS_098_07-------------------------#'
|
--echo '#--------------------FN_DYNVARS_098_07-------------------------#'
|
||||||
###########################################
|
###########################################
|
||||||
#Check if sorting is applied on BLOB type #
|
#Check if sorting is applied on BLOB type #
|
||||||
###########################################
|
###########################################
|
||||||
--echo Testing type BLOB
|
--echo Testing type BLOB
|
||||||
# Setting global value of variable and inserting data in table
|
# Setting global value of variable and inserting data in table
|
||||||
SET @@global.max_sort_length = 30;
|
SET @@max_sort_length = 70;
|
||||||
SELECT @@global.max_sort_length;
|
SELECT @@max_sort_length;
|
||||||
INSERT INTO t1 set c = repeat('x',29);
|
INSERT INTO t1 set c = repeat('x',69);
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t1 set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t1 set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t1 set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t1 ORDER BY c, id;
|
SELECT c from t1 ORDER BY c, id DESC;
|
||||||
--echo ** Results should be sorted **
|
--echo ** Results should be sorted **
|
||||||
|
|
||||||
# Setting session value of variable and inserting data in table
|
# Setting session value of variable and inserting data in table
|
||||||
SET @@session.max_sort_length = 20;
|
SET @@session.max_sort_length = 64;
|
||||||
SELECT @@session.max_sort_length;
|
SELECT @@session.max_sort_length;
|
||||||
INSERT INTO t1 set c = repeat('x',29);
|
INSERT INTO t1 set c = repeat('x',69);
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t1 set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t1 set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t1 set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t1 set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t1 ORDER BY c, id;
|
SELECT c from t1 ORDER BY c, id;
|
||||||
--echo ** Results should not be sorted **
|
--echo ** Results should not be sorted **
|
||||||
|
|
||||||
@ -210,26 +176,25 @@ SELECT c from t1 ORDER BY c, id;
|
|||||||
###########################################
|
###########################################
|
||||||
--echo Testing type CHAR
|
--echo Testing type CHAR
|
||||||
# Setting global value of variable and inserting data in table
|
# Setting global value of variable and inserting data in table
|
||||||
SET @@global.max_sort_length = 30;
|
SET @@global.max_sort_length = 70;
|
||||||
SELECT @@global.max_sort_length;
|
SELECT @@global.max_sort_length;
|
||||||
INSERT INTO t2 set c = repeat('x',29);
|
INSERT INTO t2 set c = repeat('x',69);
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t2 set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t2 set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t2 set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t2 ORDER BY c, id;
|
SELECT c from t2 ORDER BY c, id;
|
||||||
--echo ** Results should not be sorted **
|
--echo ** Results should not be sorted **
|
||||||
|
|
||||||
# Setting session value of variable and inserting data in table
|
# Setting session value of variable and inserting data in table
|
||||||
SET @@session.max_sort_length = 20;
|
SET @@session.max_sort_length = 64;
|
||||||
SELECT @@session.max_sort_length;
|
SELECT @@session.max_sort_length;
|
||||||
INSERT INTO t2 set c = repeat('x',29);
|
INSERT INTO t2 set c = repeat('x',69);
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'r','x');
|
INSERT INTO t2 set c = concat(repeat('x',68),'r','x');
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'s','y');
|
INSERT INTO t2 set c = concat(repeat('x',68),'s','y');
|
||||||
INSERT INTO t2 set c = concat(repeat('x',28),'g','w');
|
INSERT INTO t2 set c = concat(repeat('x',68),'g','w');
|
||||||
SELECT c from t2 ORDER BY c, id;
|
SELECT c from t2 ORDER BY c, id;
|
||||||
--echo ** Results should not be sorted **
|
--echo ** Results should not be sorted **
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cleanup
|
# Cleanup
|
||||||
#
|
#
|
||||||
@ -239,12 +204,6 @@ connection default;
|
|||||||
disconnect test_con1;
|
disconnect test_con1;
|
||||||
disconnect test_con2;
|
disconnect test_con2;
|
||||||
|
|
||||||
SET @@SESSION.max_sort_length = @session_max_sort_length;
|
DROP TABLE t, t1, t2;
|
||||||
|
|
||||||
--disable_warnings
|
|
||||||
DROP TABLE IF EXISTS t;
|
|
||||||
DROP TABLE IF EXISTS t1;
|
|
||||||
DROP TABLE IF EXISTS t2;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
SET @@global.max_sort_length= @start_value;
|
SET @@global.max_sort_length= @start_value;
|
||||||
|
@ -170,7 +170,7 @@ static pid_t pid;
|
|||||||
static char addr2line_binary[1024];
|
static char addr2line_binary[1024];
|
||||||
static char output[1024];
|
static char output[1024];
|
||||||
static struct pollfd poll_fds;
|
static struct pollfd poll_fds;
|
||||||
Dl_info info;
|
static Dl_info info;
|
||||||
|
|
||||||
int start_addr2line_fork(const char *binary_path)
|
int start_addr2line_fork(const char *binary_path)
|
||||||
{
|
{
|
||||||
|
@ -126,7 +126,7 @@ log_generic () {
|
|||||||
case $logging in
|
case $logging in
|
||||||
init) ;; # Just echo the message, don't save it anywhere
|
init) ;; # Just echo the message, don't save it anywhere
|
||||||
file)
|
file)
|
||||||
if [ -n "$helper" ]; then
|
if [ "$helper_exist" -eq "0" ]; then
|
||||||
echo "$msg" | "$helper" "$user" log "$err_log"
|
echo "$msg" | "$helper" "$user" log "$err_log"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@ -150,7 +150,7 @@ eval_log_error () {
|
|||||||
local cmd="$1"
|
local cmd="$1"
|
||||||
case $logging in
|
case $logging in
|
||||||
file)
|
file)
|
||||||
if [ -n "$helper" ]; then
|
if [ "$helper_exist" -eq "0" ]; then
|
||||||
cmd="$cmd 2>&1 | "`shell_quote_string "$helper"`" $user log "`shell_quote_string "$err_log"`
|
cmd="$cmd 2>&1 | "`shell_quote_string "$helper"`" $user log "`shell_quote_string "$err_log"`
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
@ -533,10 +533,9 @@ fi
|
|||||||
|
|
||||||
helper=`find_in_bin mysqld_safe_helper`
|
helper=`find_in_bin mysqld_safe_helper`
|
||||||
print_defaults=`find_in_bin my_print_defaults`
|
print_defaults=`find_in_bin my_print_defaults`
|
||||||
|
|
||||||
# Check if helper exists
|
# Check if helper exists
|
||||||
$helper --help >/dev/null 2>&1 || helper=""
|
command -v $helper --help >/dev/null 2>&1
|
||||||
|
helper_exist=$?
|
||||||
#
|
#
|
||||||
# Second, try to find the data directory
|
# Second, try to find the data directory
|
||||||
#
|
#
|
||||||
@ -943,7 +942,6 @@ fi
|
|||||||
|
|
||||||
# Avoid 'nohup: ignoring input' warning
|
# Avoid 'nohup: ignoring input' warning
|
||||||
test -n "$NOHUP_NICENESS" && cmd="$cmd < /dev/null"
|
test -n "$NOHUP_NICENESS" && cmd="$cmd < /dev/null"
|
||||||
|
|
||||||
log_notice "Starting $MYSQLD daemon with databases from $DATADIR"
|
log_notice "Starting $MYSQLD daemon with databases from $DATADIR"
|
||||||
|
|
||||||
# variable to track the current number of "fast" (a.k.a. subsecond) restarts
|
# variable to track the current number of "fast" (a.k.a. subsecond) restarts
|
||||||
|
@ -8494,7 +8494,7 @@ int Field_blob::store(const char *from,size_t length,CHARSET_INFO *cs)
|
|||||||
DBUG_ASSERT(length <= max_data_length());
|
DBUG_ASSERT(length <= max_data_length());
|
||||||
|
|
||||||
new_length= length;
|
new_length= length;
|
||||||
copy_length= (size_t)MY_MIN(UINT_MAX,table->in_use->variables.group_concat_max_len);
|
copy_length= table->in_use->variables.group_concat_max_len;
|
||||||
if (new_length > copy_length)
|
if (new_length > copy_length)
|
||||||
{
|
{
|
||||||
new_length= Well_formed_prefix(cs,
|
new_length= Well_formed_prefix(cs,
|
||||||
|
@ -1394,8 +1394,6 @@ public:
|
|||||||
virtual uint max_packed_col_length(uint max_length)
|
virtual uint max_packed_col_length(uint max_length)
|
||||||
{ return max_length;}
|
{ return max_length;}
|
||||||
|
|
||||||
virtual bool is_packable() const { return false; }
|
|
||||||
|
|
||||||
uint offset(const uchar *record) const
|
uint offset(const uchar *record) const
|
||||||
{
|
{
|
||||||
return (uint) (ptr - record);
|
return (uint) (ptr - record);
|
||||||
@ -1988,7 +1986,6 @@ public:
|
|||||||
bool can_optimize_range(const Item_bool_func *cond,
|
bool can_optimize_range(const Item_bool_func *cond,
|
||||||
const Item *item,
|
const Item *item,
|
||||||
bool is_eq_func) const;
|
bool is_eq_func) const;
|
||||||
bool is_packable() const { return true; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* base class for float and double and decimal (old one) */
|
/* base class for float and double and decimal (old one) */
|
||||||
|
@ -1978,14 +1978,7 @@ sortlength(THD *thd, SORT_FIELD *sortorder, uint s_length,
|
|||||||
if (sortorder->field)
|
if (sortorder->field)
|
||||||
{
|
{
|
||||||
CHARSET_INFO *cs= sortorder->field->sort_charset();
|
CHARSET_INFO *cs= sortorder->field->sort_charset();
|
||||||
sortorder->type= sortorder->field->is_packable() ?
|
|
||||||
SORT_FIELD_ATTR::VARIABLE_SIZE :
|
|
||||||
SORT_FIELD_ATTR::FIXED_SIZE;
|
|
||||||
|
|
||||||
sortorder->length= sortorder->field->sort_length();
|
sortorder->length= sortorder->field->sort_length();
|
||||||
if (sortorder->is_variable_sized())
|
|
||||||
set_if_smaller(sortorder->length, thd->variables.max_sort_length);
|
|
||||||
|
|
||||||
if (use_strnxfrm((cs=sortorder->field->sort_charset())))
|
if (use_strnxfrm((cs=sortorder->field->sort_charset())))
|
||||||
{
|
{
|
||||||
*multi_byte_charset= true;
|
*multi_byte_charset= true;
|
||||||
@ -1996,10 +1989,6 @@ sortlength(THD *thd, SORT_FIELD *sortorder, uint s_length,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sortorder->type= sortorder->item->type_handler()->is_packable() ?
|
|
||||||
SORT_FIELD_ATTR::VARIABLE_SIZE :
|
|
||||||
SORT_FIELD_ATTR::FIXED_SIZE;
|
|
||||||
|
|
||||||
sortorder->item->type_handler()->sortlength(thd, sortorder->item,
|
sortorder->item->type_handler()->sortlength(thd, sortorder->item,
|
||||||
sortorder);
|
sortorder);
|
||||||
if (use_strnxfrm(sortorder->item->collation.collation))
|
if (use_strnxfrm(sortorder->item->collation.collation))
|
||||||
@ -2009,8 +1998,7 @@ sortlength(THD *thd, SORT_FIELD *sortorder, uint s_length,
|
|||||||
if (sortorder->item->maybe_null)
|
if (sortorder->item->maybe_null)
|
||||||
length++; // Place for NULL marker
|
length++; // Place for NULL marker
|
||||||
}
|
}
|
||||||
if (sortorder->is_variable_sized())
|
set_if_smaller(sortorder->length, thd->variables.max_sort_length);
|
||||||
set_if_smaller(sortorder->length, thd->variables.max_sort_length);
|
|
||||||
length+=sortorder->length;
|
length+=sortorder->length;
|
||||||
}
|
}
|
||||||
sortorder->field= (Field*) 0; // end marker
|
sortorder->field= (Field*) 0; // end marker
|
||||||
|
@ -3322,6 +3322,13 @@ int handler::update_auto_increment()
|
|||||||
(table->auto_increment_field_not_null &&
|
(table->auto_increment_field_not_null &&
|
||||||
thd->variables.sql_mode & MODE_NO_AUTO_VALUE_ON_ZERO))
|
thd->variables.sql_mode & MODE_NO_AUTO_VALUE_ON_ZERO))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
There could be an error reported because value was truncated
|
||||||
|
when strict mode is enabled.
|
||||||
|
*/
|
||||||
|
if (thd->is_error())
|
||||||
|
DBUG_RETURN(HA_ERR_AUTOINC_ERANGE);
|
||||||
/*
|
/*
|
||||||
Update next_insert_id if we had already generated a value in this
|
Update next_insert_id if we had already generated a value in this
|
||||||
statement (case of INSERT VALUES(null),(3763),(null):
|
statement (case of INSERT VALUES(null),(3763),(null):
|
||||||
|
@ -5473,6 +5473,7 @@ void Item_func_like::print(String *str, enum_query_type query_type)
|
|||||||
longlong Item_func_like::val_int()
|
longlong Item_func_like::val_int()
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
|
DBUG_ASSERT(escape != -1);
|
||||||
String* res= args[0]->val_str(&cmp_value1);
|
String* res= args[0]->val_str(&cmp_value1);
|
||||||
if (args[0]->null_value)
|
if (args[0]->null_value)
|
||||||
{
|
{
|
||||||
@ -5559,15 +5560,29 @@ bool fix_escape_item(THD *thd, Item *escape_item, String *tmp_str,
|
|||||||
bool escape_used_in_parsing, CHARSET_INFO *cmp_cs,
|
bool escape_used_in_parsing, CHARSET_INFO *cmp_cs,
|
||||||
int *escape)
|
int *escape)
|
||||||
{
|
{
|
||||||
if (!escape_item->const_during_execution())
|
/*
|
||||||
|
ESCAPE clause accepts only constant arguments and Item_param.
|
||||||
|
|
||||||
|
Subqueries during context_analysis_only might decide they're
|
||||||
|
const_during_execution, but not quite const yet, not evaluate-able.
|
||||||
|
This is fine, as most of context_analysis_only modes will never
|
||||||
|
reach val_int(), so we won't need the value.
|
||||||
|
CONTEXT_ANALYSIS_ONLY_DERIVED being a notable exception here.
|
||||||
|
*/
|
||||||
|
if (!escape_item->const_during_execution() ||
|
||||||
|
(!escape_item->const_item() &&
|
||||||
|
!(thd->lex->context_analysis_only & ~CONTEXT_ANALYSIS_ONLY_DERIVED)))
|
||||||
{
|
{
|
||||||
my_error(ER_WRONG_ARGUMENTS,MYF(0),"ESCAPE");
|
my_error(ER_WRONG_ARGUMENTS,MYF(0),"ESCAPE");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IF_DBUG(*escape= -1,);
|
||||||
|
|
||||||
if (escape_item->const_item())
|
if (escape_item->const_item())
|
||||||
{
|
{
|
||||||
/* If we are on execution stage */
|
/* If we are on execution stage */
|
||||||
|
/* XXX is it safe to evaluate is_expensive() items here? */
|
||||||
String *escape_str= escape_item->val_str(tmp_str);
|
String *escape_str= escape_item->val_str(tmp_str);
|
||||||
if (escape_str)
|
if (escape_str)
|
||||||
{
|
{
|
||||||
|
@ -2787,6 +2787,13 @@ public:
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool walk(Item_processor processor, bool walk_subquery, void *arg)
|
||||||
|
{
|
||||||
|
return walk_args(processor, walk_subquery, arg)
|
||||||
|
|| escape_item->walk(processor, walk_subquery, arg)
|
||||||
|
|| (this->*processor)(arg);
|
||||||
|
}
|
||||||
|
|
||||||
bool find_selective_predicates_list_processor(void *arg);
|
bool find_selective_predicates_list_processor(void *arg);
|
||||||
|
|
||||||
Item *get_copy(THD *thd)
|
Item *get_copy(THD *thd)
|
||||||
|
@ -3619,7 +3619,7 @@ int dump_leaf_key(void* key_arg, element_count count __attribute__((unused)),
|
|||||||
{
|
{
|
||||||
Item_func_group_concat *item= (Item_func_group_concat *) item_arg;
|
Item_func_group_concat *item= (Item_func_group_concat *) item_arg;
|
||||||
TABLE *table= item->table;
|
TABLE *table= item->table;
|
||||||
uint max_length= (uint)table->in_use->variables.group_concat_max_len;
|
uint max_length= table->in_use->variables.group_concat_max_len;
|
||||||
String tmp((char *)table->record[1], table->s->reclength,
|
String tmp((char *)table->record[1], table->s->reclength,
|
||||||
default_charset_info);
|
default_charset_info);
|
||||||
String tmp2;
|
String tmp2;
|
||||||
@ -3960,7 +3960,7 @@ bool Item_func_group_concat::repack_tree(THD *thd)
|
|||||||
DBUG_ASSERT(tree->size_of_element == st.tree.size_of_element);
|
DBUG_ASSERT(tree->size_of_element == st.tree.size_of_element);
|
||||||
st.table= table;
|
st.table= table;
|
||||||
st.len= 0;
|
st.len= 0;
|
||||||
st.maxlen= (size_t)thd->variables.group_concat_max_len;
|
st.maxlen= thd->variables.group_concat_max_len;
|
||||||
tree_walk(tree, ©_to_tree, &st, left_root_right);
|
tree_walk(tree, ©_to_tree, &st, left_root_right);
|
||||||
if (st.len <= st.maxlen) // Copying aborted. Must be OOM
|
if (st.len <= st.maxlen) // Copying aborted. Must be OOM
|
||||||
{
|
{
|
||||||
@ -3981,7 +3981,7 @@ bool Item_func_group_concat::repack_tree(THD *thd)
|
|||||||
decreases up to N=10 (that is, factor=1024) and then starts to increase,
|
decreases up to N=10 (that is, factor=1024) and then starts to increase,
|
||||||
again, very slowly.
|
again, very slowly.
|
||||||
*/
|
*/
|
||||||
#define GCONCAT_REPACK_FACTOR (1 << 10)
|
#define GCONCAT_REPACK_FACTOR 10
|
||||||
|
|
||||||
bool Item_func_group_concat::add()
|
bool Item_func_group_concat::add()
|
||||||
{
|
{
|
||||||
@ -4027,7 +4027,7 @@ bool Item_func_group_concat::add()
|
|||||||
{
|
{
|
||||||
THD *thd= table->in_use;
|
THD *thd= table->in_use;
|
||||||
table->field[0]->store(row_str_len, FALSE);
|
table->field[0]->store(row_str_len, FALSE);
|
||||||
if (tree_len > thd->variables.group_concat_max_len * GCONCAT_REPACK_FACTOR
|
if ((tree_len >> GCONCAT_REPACK_FACTOR) > thd->variables.group_concat_max_len
|
||||||
&& tree->elements_in_tree > 1)
|
&& tree->elements_in_tree > 1)
|
||||||
if (repack_tree(thd))
|
if (repack_tree(thd))
|
||||||
return 1;
|
return 1;
|
||||||
@ -4082,9 +4082,9 @@ Item_func_group_concat::fix_fields(THD *thd, Item **ref)
|
|||||||
result.set_charset(collation.collation);
|
result.set_charset(collation.collation);
|
||||||
result_field= 0;
|
result_field= 0;
|
||||||
null_value= 1;
|
null_value= 1;
|
||||||
max_length= (uint32)(thd->variables.group_concat_max_len
|
max_length= (uint32)MY_MIN(thd->variables.group_concat_max_len
|
||||||
/ collation.collation->mbminlen
|
/ collation.collation->mbminlen
|
||||||
* collation.collation->mbmaxlen);
|
* collation.collation->mbmaxlen, UINT_MAX32);
|
||||||
|
|
||||||
uint32 offset;
|
uint32 offset;
|
||||||
if (separator->needs_conversion(separator->length(), separator->charset(),
|
if (separator->needs_conversion(separator->length(), separator->charset(),
|
||||||
|
@ -7800,9 +7800,9 @@ SEL_TREE *Item_func_in::get_func_mm_tree(RANGE_OPT_PARAM *param,
|
|||||||
{
|
{
|
||||||
key_map::Iterator it(field->key_start);
|
key_map::Iterator it(field->key_start);
|
||||||
uint key_no;
|
uint key_no;
|
||||||
while ((key_no= it.next_bit()) != key_map::Iterator::BITMAP_END)
|
while ((key_no= it++) != key_map::Iterator::BITMAP_END)
|
||||||
{
|
{
|
||||||
KEY *key_info= ¶m->table->key_info[key_no];
|
KEY *key_info= &field->table->key_info[key_no];
|
||||||
if (key_info->user_defined_key_parts == 1 &&
|
if (key_info->user_defined_key_parts == 1 &&
|
||||||
(key_info->flags & HA_NOSAME))
|
(key_info->flags & HA_NOSAME))
|
||||||
{
|
{
|
||||||
|
@ -6231,6 +6231,7 @@ find_field_in_table_ref(THD *thd, TABLE_LIST *table_list,
|
|||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
/* Check if there are sufficient access rights to the found field. */
|
/* Check if there are sufficient access rights to the found field. */
|
||||||
if (check_privileges &&
|
if (check_privileges &&
|
||||||
|
!table_list->is_derived() &&
|
||||||
check_column_grant_in_table_ref(thd, *actual_table, name, length, fld))
|
check_column_grant_in_table_ref(thd, *actual_table, name, length, fld))
|
||||||
fld= WRONG_GRANT;
|
fld= WRONG_GRANT;
|
||||||
else
|
else
|
||||||
@ -8092,36 +8093,23 @@ insert_fields(THD *thd, Name_resolution_context *context, const char *db_name,
|
|||||||
|
|
||||||
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
#ifndef NO_EMBEDDED_ACCESS_CHECKS
|
||||||
/*
|
/*
|
||||||
Ensure that we have access rights to all fields to be inserted. Under
|
Ensure that we have access rights to all fields to be inserted
|
||||||
some circumstances, this check may be skipped.
|
the table 'tables'. Under some circumstances, this check may be skipped.
|
||||||
|
|
||||||
- If any_privileges is true, skip the check.
|
The check is skipped in the following cases:
|
||||||
|
|
||||||
- If the SELECT privilege has been found as fulfilled already for both
|
- any_privileges is true
|
||||||
the TABLE and TABLE_LIST objects (and both of these exist, of
|
|
||||||
course), the check is skipped.
|
|
||||||
|
|
||||||
- If the SELECT privilege has been found fulfilled for the TABLE object
|
- the table is a derived table
|
||||||
and the TABLE_LIST represents a derived table other than a view (see
|
|
||||||
below), the check is skipped.
|
|
||||||
|
|
||||||
- If the TABLE_LIST object represents a view, we may skip checking if
|
- the table is a view with SELECT privilege
|
||||||
the SELECT privilege has been found fulfilled for it, regardless of
|
|
||||||
the TABLE object.
|
|
||||||
|
|
||||||
- If there is no TABLE object, the test is skipped if either
|
- the table is a base table with SELECT privilege
|
||||||
* the TABLE_LIST does not represent a view, or
|
|
||||||
* the SELECT privilege has been found fulfilled.
|
|
||||||
|
|
||||||
A TABLE_LIST that is not a view may be a subquery, an
|
|
||||||
information_schema table, or a nested table reference. See the comment
|
|
||||||
for TABLE_LIST.
|
|
||||||
*/
|
*/
|
||||||
if (!((table && tables->is_non_derived() &&
|
if (!any_privileges &&
|
||||||
(table->grant.privilege & SELECT_ACL)) ||
|
!tables->is_derived() &&
|
||||||
((!tables->is_non_derived() &&
|
!(tables->is_view() && (tables->grant.privilege & SELECT_ACL)) &&
|
||||||
(tables->grant.privilege & SELECT_ACL)))) &&
|
!(table && (table->grant.privilege & SELECT_ACL)))
|
||||||
!any_privileges)
|
|
||||||
{
|
{
|
||||||
field_iterator.set(tables);
|
field_iterator.set(tables);
|
||||||
if (check_grant_all_columns(thd, SELECT_ACL, &field_iterator))
|
if (check_grant_all_columns(thd, SELECT_ACL, &field_iterator))
|
||||||
|
@ -1449,7 +1449,7 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used)
|
|||||||
DBUG_PRINT("qcache", ("\
|
DBUG_PRINT("qcache", ("\
|
||||||
long %d, 4.1: %d, eof: %d, bin_proto: %d, more results %d, pkt_nr: %d, \
|
long %d, 4.1: %d, eof: %d, bin_proto: %d, more results %d, pkt_nr: %d, \
|
||||||
CS client: %u, CS result: %u, CS conn: %u, limit: %llu, TZ: %p, \
|
CS client: %u, CS result: %u, CS conn: %u, limit: %llu, TZ: %p, \
|
||||||
sql mode: 0x%llx, sort len: %llu, conncat len: %llu, div_precision: %zu, \
|
sql mode: 0x%llx, sort len: %llu, concat len: %u, div_precision: %zu, \
|
||||||
def_week_frmt: %zu, in_trans: %d, autocommit: %d",
|
def_week_frmt: %zu, in_trans: %d, autocommit: %d",
|
||||||
(int)flags.client_long_flag,
|
(int)flags.client_long_flag,
|
||||||
(int)flags.client_protocol_41,
|
(int)flags.client_protocol_41,
|
||||||
@ -1949,7 +1949,7 @@ Query_cache::send_result_to_client(THD *thd, char *org_sql, uint query_length)
|
|||||||
DBUG_PRINT("qcache", ("\
|
DBUG_PRINT("qcache", ("\
|
||||||
long %d, 4.1: %d, eof: %d, bin_proto: %d, more results %d, pkt_nr: %d, \
|
long %d, 4.1: %d, eof: %d, bin_proto: %d, more results %d, pkt_nr: %d, \
|
||||||
CS client: %u, CS result: %u, CS conn: %u, limit: %llu, TZ: %p, \
|
CS client: %u, CS result: %u, CS conn: %u, limit: %llu, TZ: %p, \
|
||||||
sql mode: 0x%llx, sort len: %llu, conncat len: %llu, div_precision: %zu, \
|
sql mode: 0x%llx, sort len: %llu, concat len: %u, div_precision: %zu, \
|
||||||
def_week_frmt: %zu, in_trans: %d, autocommit: %d",
|
def_week_frmt: %zu, in_trans: %d, autocommit: %d",
|
||||||
(int)flags.client_long_flag,
|
(int)flags.client_long_flag,
|
||||||
(int)flags.client_protocol_41,
|
(int)flags.client_protocol_41,
|
||||||
|
@ -558,11 +558,11 @@ struct Query_cache_query_flags
|
|||||||
uint character_set_client_num;
|
uint character_set_client_num;
|
||||||
uint character_set_results_num;
|
uint character_set_results_num;
|
||||||
uint collation_connection_num;
|
uint collation_connection_num;
|
||||||
|
uint group_concat_max_len;
|
||||||
ha_rows limit;
|
ha_rows limit;
|
||||||
Time_zone *time_zone;
|
Time_zone *time_zone;
|
||||||
sql_mode_t sql_mode;
|
sql_mode_t sql_mode;
|
||||||
ulonglong max_sort_length;
|
ulonglong max_sort_length;
|
||||||
ulonglong group_concat_max_len;
|
|
||||||
size_t default_week_format;
|
size_t default_week_format;
|
||||||
size_t div_precision_increment;
|
size_t div_precision_increment;
|
||||||
MY_LOCALE *lc_time_names;
|
MY_LOCALE *lc_time_names;
|
||||||
|
@ -592,7 +592,6 @@ typedef struct system_variables
|
|||||||
ulonglong bulk_insert_buff_size;
|
ulonglong bulk_insert_buff_size;
|
||||||
ulonglong join_buff_size;
|
ulonglong join_buff_size;
|
||||||
ulonglong sortbuff_size;
|
ulonglong sortbuff_size;
|
||||||
ulonglong group_concat_max_len;
|
|
||||||
ulonglong default_regex_flags;
|
ulonglong default_regex_flags;
|
||||||
ulonglong max_mem_used;
|
ulonglong max_mem_used;
|
||||||
|
|
||||||
@ -685,6 +684,8 @@ typedef struct system_variables
|
|||||||
uint32 gtid_domain_id;
|
uint32 gtid_domain_id;
|
||||||
uint64 gtid_seq_no;
|
uint64 gtid_seq_no;
|
||||||
|
|
||||||
|
uint group_concat_max_len;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Default transaction access mode. READ ONLY (true) or READ WRITE (false).
|
Default transaction access mode. READ ONLY (true) or READ WRITE (false).
|
||||||
*/
|
*/
|
||||||
@ -5787,10 +5788,15 @@ class select_union_recursive :public select_unit
|
|||||||
public:
|
public:
|
||||||
/* The temporary table with the new records generated by one iterative step */
|
/* The temporary table with the new records generated by one iterative step */
|
||||||
TABLE *incr_table;
|
TABLE *incr_table;
|
||||||
|
/* The TMP_TABLE_PARAM structure used to create incr_table */
|
||||||
|
TMP_TABLE_PARAM incr_table_param;
|
||||||
/* One of tables from the list rec_tables (determined dynamically) */
|
/* One of tables from the list rec_tables (determined dynamically) */
|
||||||
TABLE *first_rec_table_to_update;
|
TABLE *first_rec_table_to_update;
|
||||||
/* The temporary tables used for recursive table references */
|
/*
|
||||||
List<TABLE> rec_tables;
|
The list of all recursive table references to the CTE for whose
|
||||||
|
specification this select_union_recursive was created
|
||||||
|
*/
|
||||||
|
List<TABLE_LIST> rec_table_refs;
|
||||||
/*
|
/*
|
||||||
The count of how many times cleanup() was called with cleaned==false
|
The count of how many times cleanup() was called with cleaned==false
|
||||||
for the unit specifying the recursive CTE for which this object was created
|
for the unit specifying the recursive CTE for which this object was created
|
||||||
@ -5800,7 +5806,8 @@ class select_union_recursive :public select_unit
|
|||||||
|
|
||||||
select_union_recursive(THD *thd_arg):
|
select_union_recursive(THD *thd_arg):
|
||||||
select_unit(thd_arg),
|
select_unit(thd_arg),
|
||||||
incr_table(0), first_rec_table_to_update(0), cleanup_count(0) {};
|
incr_table(0), first_rec_table_to_update(0), cleanup_count(0)
|
||||||
|
{ incr_table_param.init(); };
|
||||||
|
|
||||||
int send_data(List<Item> &items);
|
int send_data(List<Item> &items);
|
||||||
bool create_result_table(THD *thd, List<Item> *column_types,
|
bool create_result_table(THD *thd, List<Item> *column_types,
|
||||||
@ -6095,8 +6102,6 @@ struct SORT_FIELD_ATTR
|
|||||||
{
|
{
|
||||||
uint length; /* Length of sort field */
|
uint length; /* Length of sort field */
|
||||||
uint suffix_length; /* Length suffix (0-4) */
|
uint suffix_length; /* Length suffix (0-4) */
|
||||||
enum Type { FIXED_SIZE, VARIABLE_SIZE } type;
|
|
||||||
bool is_variable_sized() { return type == VARIABLE_SIZE; }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -252,6 +252,8 @@ With_element *With_clause::find_table_def(TABLE_LIST *table,
|
|||||||
!table->is_fqtn)
|
!table->is_fqtn)
|
||||||
{
|
{
|
||||||
table->set_derived();
|
table->set_derived();
|
||||||
|
table->db.str= empty_c_string;
|
||||||
|
table->db.length= 0;
|
||||||
return with_elem;
|
return with_elem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -887,8 +889,6 @@ st_select_lex_unit *With_element::clone_parsed_spec(THD *thd,
|
|||||||
goto err;
|
goto err;
|
||||||
spec_tables_tail= tbl;
|
spec_tables_tail= tbl;
|
||||||
}
|
}
|
||||||
if (check_table_access(thd, SELECT_ACL, spec_tables, FALSE, UINT_MAX, FALSE))
|
|
||||||
goto err;
|
|
||||||
if (spec_tables)
|
if (spec_tables)
|
||||||
{
|
{
|
||||||
if (with_table->next_global)
|
if (with_table->next_global)
|
||||||
@ -914,6 +914,22 @@ st_select_lex_unit *With_element::clone_parsed_spec(THD *thd,
|
|||||||
with_select));
|
with_select));
|
||||||
if (check_dependencies_in_with_clauses(lex->with_clauses_list))
|
if (check_dependencies_in_with_clauses(lex->with_clauses_list))
|
||||||
res= NULL;
|
res= NULL;
|
||||||
|
/*
|
||||||
|
Resolve references to CTE from the spec_tables list that has not
|
||||||
|
been resolved yet.
|
||||||
|
*/
|
||||||
|
for (TABLE_LIST *tbl= spec_tables;
|
||||||
|
tbl;
|
||||||
|
tbl= tbl->next_global)
|
||||||
|
{
|
||||||
|
if (!tbl->with)
|
||||||
|
tbl->with= with_select->find_table_def_in_with_clauses(tbl);
|
||||||
|
if (tbl == spec_tables_tail)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (check_table_access(thd, SELECT_ACL, spec_tables, FALSE, UINT_MAX, FALSE))
|
||||||
|
goto err;
|
||||||
|
|
||||||
lex->sphead= NULL; // in order not to delete lex->sphead
|
lex->sphead= NULL; // in order not to delete lex->sphead
|
||||||
lex_end(lex);
|
lex_end(lex);
|
||||||
err:
|
err:
|
||||||
@ -1466,10 +1482,11 @@ void With_element::print(String *str, enum_query_type query_type)
|
|||||||
|
|
||||||
bool With_element::instantiate_tmp_tables()
|
bool With_element::instantiate_tmp_tables()
|
||||||
{
|
{
|
||||||
List_iterator_fast<TABLE> li(rec_result->rec_tables);
|
List_iterator_fast<TABLE_LIST> li(rec_result->rec_table_refs);
|
||||||
TABLE *rec_table;
|
TABLE_LIST *rec_tbl;
|
||||||
while ((rec_table= li++))
|
while ((rec_tbl= li++))
|
||||||
{
|
{
|
||||||
|
TABLE *rec_table= rec_tbl->table;
|
||||||
if (!rec_table->is_created() &&
|
if (!rec_table->is_created() &&
|
||||||
instantiate_tmp_table(rec_table,
|
instantiate_tmp_table(rec_table,
|
||||||
rec_table->s->key_info,
|
rec_table->s->key_info,
|
||||||
|
@ -710,7 +710,7 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
|
|||||||
if (derived->is_with_table_recursive_reference())
|
if (derived->is_with_table_recursive_reference())
|
||||||
{
|
{
|
||||||
/* Here 'derived" is a secondary recursive table reference */
|
/* Here 'derived" is a secondary recursive table reference */
|
||||||
unit->with_element->rec_result->rec_tables.push_back(derived->table);
|
unit->with_element->rec_result->rec_table_refs.push_back(derived);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DBUG_ASSERT(derived->table || res);
|
DBUG_ASSERT(derived->table || res);
|
||||||
@ -808,17 +808,17 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
|
|||||||
|
|
||||||
derived->fill_me= FALSE;
|
derived->fill_me= FALSE;
|
||||||
|
|
||||||
if (!(derived->derived_result= new (thd->mem_root) select_unit(thd)))
|
if ((!derived->is_with_table_recursive_reference() ||
|
||||||
|
!derived->derived_result) &&
|
||||||
|
!(derived->derived_result= new (thd->mem_root) select_unit(thd)))
|
||||||
DBUG_RETURN(TRUE); // out of memory
|
DBUG_RETURN(TRUE); // out of memory
|
||||||
|
|
||||||
lex->context_analysis_only|= CONTEXT_ANALYSIS_ONLY_DERIVED;
|
|
||||||
// st_select_lex_unit::prepare correctly work for single select
|
// st_select_lex_unit::prepare correctly work for single select
|
||||||
if ((res= unit->prepare(derived, derived->derived_result, 0)))
|
if ((res= unit->prepare(derived, derived->derived_result, 0)))
|
||||||
goto exit;
|
goto exit;
|
||||||
if (derived->with &&
|
if (derived->with &&
|
||||||
(res= derived->with->rename_columns_of_derived_unit(thd, unit)))
|
(res= derived->with->rename_columns_of_derived_unit(thd, unit)))
|
||||||
goto exit;
|
goto exit;
|
||||||
lex->context_analysis_only&= ~CONTEXT_ANALYSIS_ONLY_DERIVED;
|
|
||||||
if ((res= check_duplicate_names(thd, unit->types, 0)))
|
if ((res= check_duplicate_names(thd, unit->types, 0)))
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
@ -827,7 +827,8 @@ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *derived)
|
|||||||
Depending on the result field translation will or will not
|
Depending on the result field translation will or will not
|
||||||
be created.
|
be created.
|
||||||
*/
|
*/
|
||||||
if (derived->init_derived(thd, FALSE))
|
if (!derived->is_with_table_recursive_reference() &&
|
||||||
|
derived->init_derived(thd, FALSE))
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -742,6 +742,9 @@ static bool mysqld_help_internal(THD *thd, const char *mask)
|
|||||||
&name, &description, &example);
|
&name, &description, &example);
|
||||||
delete select;
|
delete select;
|
||||||
|
|
||||||
|
if (thd->is_error())
|
||||||
|
goto error;
|
||||||
|
|
||||||
if (count_topics == 0)
|
if (count_topics == 0)
|
||||||
{
|
{
|
||||||
int UNINIT_VAR(key_id);
|
int UNINIT_VAR(key_id);
|
||||||
|
@ -6805,6 +6805,9 @@ check_access(THD *thd, ulong want_access, const char *db, ulong *save_priv,
|
|||||||
bool check_single_table_access(THD *thd, ulong privilege, TABLE_LIST *tables,
|
bool check_single_table_access(THD *thd, ulong privilege, TABLE_LIST *tables,
|
||||||
bool no_errors)
|
bool no_errors)
|
||||||
{
|
{
|
||||||
|
if (tables->derived)
|
||||||
|
return 0;
|
||||||
|
|
||||||
Switch_to_definer_security_ctx backup_sctx(thd, tables);
|
Switch_to_definer_security_ctx backup_sctx(thd, tables);
|
||||||
|
|
||||||
const char *db_name;
|
const char *db_name;
|
||||||
|
@ -13363,10 +13363,6 @@ void JOIN_TAB::cleanup()
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("JOIN_TAB::cleanup");
|
DBUG_ENTER("JOIN_TAB::cleanup");
|
||||||
|
|
||||||
if (tab_list && tab_list->is_with_table_recursive_reference() &&
|
|
||||||
tab_list->with->is_cleaned())
|
|
||||||
DBUG_VOID_RETURN;
|
|
||||||
|
|
||||||
DBUG_PRINT("enter", ("tab: %p table %s.%s",
|
DBUG_PRINT("enter", ("tab: %p table %s.%s",
|
||||||
this,
|
this,
|
||||||
(table ? table->s->db.str : "?"),
|
(table ? table->s->db.str : "?"),
|
||||||
|
@ -9861,7 +9861,7 @@ ST_FIELD_INFO check_constraints_fields_info[]=
|
|||||||
{"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
|
{"TABLE_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, OPEN_FULL_TABLE},
|
||||||
{"CONSTRAINT_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0,
|
{"CONSTRAINT_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0,
|
||||||
OPEN_FULL_TABLE},
|
OPEN_FULL_TABLE},
|
||||||
{"CHECK_CLAUSE", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0,
|
{"CHECK_CLAUSE", MAX_FIELD_VARCHARLENGTH , MYSQL_TYPE_STRING, 0, 0, 0,
|
||||||
OPEN_FULL_TABLE},
|
OPEN_FULL_TABLE},
|
||||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
|
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
|
||||||
};
|
};
|
||||||
|
@ -3655,8 +3655,6 @@ public:
|
|||||||
const Type_std_attributes *item,
|
const Type_std_attributes *item,
|
||||||
SORT_FIELD_ATTR *attr) const= 0;
|
SORT_FIELD_ATTR *attr) const= 0;
|
||||||
|
|
||||||
virtual bool is_packable() const { return false; }
|
|
||||||
|
|
||||||
virtual uint32 max_display_length(const Item *item) const= 0;
|
virtual uint32 max_display_length(const Item *item) const= 0;
|
||||||
virtual uint32 Item_decimal_notation_int_digits(const Item *item) const { return 0; }
|
virtual uint32 Item_decimal_notation_int_digits(const Item *item) const { return 0; }
|
||||||
virtual uint32 calc_pack_length(uint32 length) const= 0;
|
virtual uint32 calc_pack_length(uint32 length) const= 0;
|
||||||
@ -4816,8 +4814,6 @@ public:
|
|||||||
const Type_std_attributes *item,
|
const Type_std_attributes *item,
|
||||||
SORT_FIELD_ATTR *attr) const;
|
SORT_FIELD_ATTR *attr) const;
|
||||||
|
|
||||||
bool is_packable()const { return true; }
|
|
||||||
|
|
||||||
bool union_element_finalize(const Item * item) const;
|
bool union_element_finalize(const Item * item) const;
|
||||||
|
|
||||||
bool Column_definition_prepare_stage1(THD *thd,
|
bool Column_definition_prepare_stage1(THD *thd,
|
||||||
|
@ -405,7 +405,10 @@ select_union_recursive::create_result_table(THD *thd_arg,
|
|||||||
hidden))
|
hidden))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (! (incr_table= create_tmp_table(thd_arg, &tmp_table_param, *column_types,
|
incr_table_param.init();
|
||||||
|
incr_table_param.field_count= column_types->elements;
|
||||||
|
incr_table_param.bit_fields_as_long= bit_fields_as_long;
|
||||||
|
if (! (incr_table= create_tmp_table(thd_arg, &incr_table_param, *column_types,
|
||||||
(ORDER*) 0, false, 1,
|
(ORDER*) 0, false, 1,
|
||||||
options, HA_POS_ERROR, &empty_clex_str,
|
options, HA_POS_ERROR, &empty_clex_str,
|
||||||
true, keep_row_order)))
|
true, keep_row_order)))
|
||||||
@ -415,20 +418,6 @@ select_union_recursive::create_result_table(THD *thd_arg,
|
|||||||
for (uint i=0; i < table->s->fields; i++)
|
for (uint i=0; i < table->s->fields; i++)
|
||||||
incr_table->field[i]->flags &= ~(PART_KEY_FLAG | PART_INDIRECT_KEY_FLAG);
|
incr_table->field[i]->flags &= ~(PART_KEY_FLAG | PART_INDIRECT_KEY_FLAG);
|
||||||
|
|
||||||
TABLE *rec_table= 0;
|
|
||||||
if (! (rec_table= create_tmp_table(thd_arg, &tmp_table_param, *column_types,
|
|
||||||
(ORDER*) 0, false, 1,
|
|
||||||
options, HA_POS_ERROR, alias,
|
|
||||||
true, keep_row_order)))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
rec_table->keys_in_use_for_query.clear_all();
|
|
||||||
for (uint i=0; i < table->s->fields; i++)
|
|
||||||
rec_table->field[i]->flags &= ~(PART_KEY_FLAG | PART_INDIRECT_KEY_FLAG);
|
|
||||||
|
|
||||||
if (rec_tables.push_back(rec_table))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -466,10 +455,11 @@ void select_union_recursive::cleanup()
|
|||||||
free_tmp_table(thd, incr_table);
|
free_tmp_table(thd, incr_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
List_iterator<TABLE> it(rec_tables);
|
List_iterator<TABLE_LIST> it(rec_table_refs);
|
||||||
TABLE *tab;
|
TABLE_LIST *tbl;
|
||||||
while ((tab= it++))
|
while ((tbl= it++))
|
||||||
{
|
{
|
||||||
|
TABLE *tab= tbl->table;
|
||||||
if (tab->is_created())
|
if (tab->is_created())
|
||||||
{
|
{
|
||||||
tab->file->extra(HA_EXTRA_RESET_STATE);
|
tab->file->extra(HA_EXTRA_RESET_STATE);
|
||||||
@ -483,6 +473,7 @@ void select_union_recursive::cleanup()
|
|||||||
*/
|
*/
|
||||||
tab->next= thd->rec_tables;
|
tab->next= thd->rec_tables;
|
||||||
thd->rec_tables= tab;
|
thd->rec_tables= tab;
|
||||||
|
tbl->derived_result= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1138,9 +1129,33 @@ bool st_select_lex_unit::prepare(TABLE_LIST *derived_arg,
|
|||||||
goto err;
|
goto err;
|
||||||
if (!derived_arg->table)
|
if (!derived_arg->table)
|
||||||
{
|
{
|
||||||
derived_arg->table= with_element->rec_result->rec_tables.head();
|
bool res= false;
|
||||||
if (derived_arg->derived_result)
|
|
||||||
derived_arg->derived_result->table= derived_arg->table;
|
if ((!derived_arg->is_with_table_recursive_reference() ||
|
||||||
|
!derived_arg->derived_result) &&
|
||||||
|
!(derived_arg->derived_result=
|
||||||
|
new (thd->mem_root) select_unit(thd)))
|
||||||
|
goto err; // out of memory
|
||||||
|
thd->create_tmp_table_for_derived= TRUE;
|
||||||
|
|
||||||
|
res= derived_arg->derived_result->create_result_table(thd,
|
||||||
|
&types,
|
||||||
|
FALSE,
|
||||||
|
create_options,
|
||||||
|
&derived_arg->alias,
|
||||||
|
FALSE, FALSE,
|
||||||
|
FALSE, 0);
|
||||||
|
thd->create_tmp_table_for_derived= FALSE;
|
||||||
|
if (res)
|
||||||
|
goto err;
|
||||||
|
derived_arg->derived_result->set_unit(this);
|
||||||
|
derived_arg->table= derived_arg->derived_result->table;
|
||||||
|
if (derived_arg->is_with_table_recursive_reference())
|
||||||
|
{
|
||||||
|
/* Here 'derived_arg' is the primary recursive table reference */
|
||||||
|
derived_arg->with->rec_result->
|
||||||
|
rec_table_refs.push_back(derived_arg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
with_element->mark_as_with_prepared_anchor();
|
with_element->mark_as_with_prepared_anchor();
|
||||||
is_rec_result_table_created= true;
|
is_rec_result_table_created= true;
|
||||||
@ -1783,11 +1798,11 @@ bool st_select_lex_unit::exec_recursive()
|
|||||||
TABLE *incr_table= with_element->rec_result->incr_table;
|
TABLE *incr_table= with_element->rec_result->incr_table;
|
||||||
st_select_lex *end= NULL;
|
st_select_lex *end= NULL;
|
||||||
bool is_unrestricted= with_element->is_unrestricted();
|
bool is_unrestricted= with_element->is_unrestricted();
|
||||||
List_iterator_fast<TABLE> li(with_element->rec_result->rec_tables);
|
List_iterator_fast<TABLE_LIST> li(with_element->rec_result->rec_table_refs);
|
||||||
TMP_TABLE_PARAM *tmp_table_param= &with_element->rec_result->tmp_table_param;
|
TMP_TABLE_PARAM *tmp_table_param= &with_element->rec_result->tmp_table_param;
|
||||||
ha_rows examined_rows= 0;
|
ha_rows examined_rows= 0;
|
||||||
bool was_executed= executed;
|
bool was_executed= executed;
|
||||||
TABLE *rec_table;
|
TABLE_LIST *rec_tbl;
|
||||||
|
|
||||||
DBUG_ENTER("st_select_lex_unit::exec_recursive");
|
DBUG_ENTER("st_select_lex_unit::exec_recursive");
|
||||||
|
|
||||||
@ -1865,8 +1880,9 @@ bool st_select_lex_unit::exec_recursive()
|
|||||||
else
|
else
|
||||||
with_element->level++;
|
with_element->level++;
|
||||||
|
|
||||||
while ((rec_table= li++))
|
while ((rec_tbl= li++))
|
||||||
{
|
{
|
||||||
|
TABLE *rec_table= rec_tbl->table;
|
||||||
saved_error=
|
saved_error=
|
||||||
incr_table->insert_all_rows_into_tmp_table(thd, rec_table,
|
incr_table->insert_all_rows_into_tmp_table(thd, rec_table,
|
||||||
tmp_table_param,
|
tmp_table_param,
|
||||||
|
@ -1852,7 +1852,11 @@ int mysql_multi_update_prepare(THD *thd)
|
|||||||
During prepare phase acquire only S metadata locks instead of SW locks to
|
During prepare phase acquire only S metadata locks instead of SW locks to
|
||||||
keep prepare of multi-UPDATE compatible with concurrent LOCK TABLES WRITE
|
keep prepare of multi-UPDATE compatible with concurrent LOCK TABLES WRITE
|
||||||
and global read lock.
|
and global read lock.
|
||||||
|
|
||||||
|
Don't evaluate any subqueries even if constant, because
|
||||||
|
tables aren't locked yet.
|
||||||
*/
|
*/
|
||||||
|
lex->context_analysis_only|= CONTEXT_ANALYSIS_ONLY_DERIVED;
|
||||||
if (thd->lex->sql_command == SQLCOM_UPDATE_MULTI)
|
if (thd->lex->sql_command == SQLCOM_UPDATE_MULTI)
|
||||||
{
|
{
|
||||||
if (open_tables(thd, &table_list, &table_count,
|
if (open_tables(thd, &table_list, &table_count,
|
||||||
@ -1875,6 +1879,9 @@ int mysql_multi_update_prepare(THD *thd)
|
|||||||
{
|
{
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lex->context_analysis_only&= ~CONTEXT_ANALYSIS_ONLY_DERIVED;
|
||||||
|
|
||||||
(void) read_statistics_for_tables_if_needed(thd, table_list);
|
(void) read_statistics_for_tables_if_needed(thd, table_list);
|
||||||
/* @todo: downgrade the metadata locks here. */
|
/* @todo: downgrade the metadata locks here. */
|
||||||
|
|
||||||
|
@ -292,6 +292,8 @@ bool create_view_precheck(THD *thd, TABLE_LIST *tables, TABLE_LIST *view,
|
|||||||
{
|
{
|
||||||
for (tbl= sl->get_table_list(); tbl; tbl= tbl->next_local)
|
for (tbl= sl->get_table_list(); tbl; tbl= tbl->next_local)
|
||||||
{
|
{
|
||||||
|
if (!tbl->with && tbl->select_lex)
|
||||||
|
tbl->with= tbl->select_lex->find_table_def_in_with_clauses(tbl);
|
||||||
/*
|
/*
|
||||||
Ensure that we have some privileges on this table, more strict check
|
Ensure that we have some privileges on this table, more strict check
|
||||||
will be done on column level after preparation,
|
will be done on column level after preparation,
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user