Commit 0d29f375 authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 11.1 into 11.2

parents eac91074 edc47884
...@@ -32,7 +32,7 @@ Without automated tests, future regressions in the expected behavior can't be au ...@@ -32,7 +32,7 @@ Without automated tests, future regressions in the expected behavior can't be au
If the changes are not amenable to automated testing, please explain why not and carefully describe how to test manually. If the changes are not amenable to automated testing, please explain why not and carefully describe how to test manually.
<!-- <!--
Tick one of the following boxes [x] to help us understand if the base branch for the PR is correct. (Currently the earliest maintained branch is 10.3) Tick one of the following boxes [x] to help us understand if the base branch for the PR is correct. (Currently the earliest maintained branch is 10.4)
--> -->
## Basing the PR against the correct MariaDB version ## Basing the PR against the correct MariaDB version
- [ ] *This is a new feature and the PR is based against the latest MariaDB development branch.* - [ ] *This is a new feature and the PR is based against the latest MariaDB development branch.*
......
...@@ -1166,6 +1166,8 @@ static int install_used_plugin_data_types(void) ...@@ -1166,6 +1166,8 @@ static int install_used_plugin_data_types(void)
DYNAMIC_STRING ds_result; DYNAMIC_STRING ds_result;
const char *query = "SELECT table_comment FROM information_schema.tables" const char *query = "SELECT table_comment FROM information_schema.tables"
" WHERE table_comment LIKE 'Unknown data type: %'"; " WHERE table_comment LIKE 'Unknown data type: %'";
if (opt_systables_only)
return 0;
if (init_dynamic_string(&ds_result, "", 512, 512)) if (init_dynamic_string(&ds_result, "", 512, 512))
die("Out of memory"); die("Out of memory");
run_query(query, &ds_result, TRUE); run_query(query, &ds_result, TRUE);
......
...@@ -121,10 +121,6 @@ in ...@@ -121,10 +121,6 @@ in
# there is intentionally no customizations whatsoever. # there is intentionally no customizations whatsoever.
;; ;;
# Ubuntu # Ubuntu
"bionic")
remove_rocksdb_tools
[ "$architecture" != amd64 ] && disable_pmem
;&
"focal") "focal")
replace_uring_with_aio replace_uring_with_aio
disable_libfmt disable_libfmt
......
# Remove anonymous users added by add_anonymous_users.inc # Remove anonymous users added by add_anonymous_users.inc
disable_warnings; disable_warnings;
disable_query_log; disable_query_log;
DELETE FROM mysql.user where host='localhost' and user=''; DELETE FROM mysql.global_priv where host='localhost' and user='';
FLUSH PRIVILEGES; FLUSH PRIVILEGES;
enable_query_log; enable_query_log;
enable_warnings; enable_warnings;
...@@ -2337,4 +2337,278 @@ set sql_mode="oracle"; ...@@ -2337,4 +2337,278 @@ set sql_mode="oracle";
with data as (select 1 as id) with data as (select 1 as id)
select id into @myid from data; select id into @myid from data;
set sql_mode= @save_sql_mode; set sql_mode= @save_sql_mode;
#
# MDEV-31995 Bogus error executing PS for query using CTE with renaming of columns
#
create table t1 (a int, b int);
insert into t1 values (1,1),(1,2),(1,3),(2,1),(2,2);
create table t2 (a int, b int);
insert into t2 values (3,1),(3,2),(3,3),(4,1),(4,2);
with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 group by col1)
select * from cte;
c1 c2
1 6
2 3
prepare st from "with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 group by col1)
select * from cte";
execute st;
c1 c2
1 6
2 3
execute st;
c1 c2
1 6
2 3
drop prepare st;
create procedure sp() with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 group by col1)
select * from cte;
call sp();
c1 c2
1 6
2 3
call sp();
c1 c2
1 6
2 3
drop procedure sp;
with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 order by col1)
select * from cte;
c1 c2
1 9
prepare st from "with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 order by col1)
select * from cte";
execute st;
c1 c2
1 9
execute st;
c1 c2
1 9
drop prepare st;
create procedure sp() with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 order by col1)
select * from cte;
call sp();
c1 c2
1 9
call sp();
c1 c2
1 9
drop procedure sp;
with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 where a > 1 group by col1
union select a as col3, sum(b) as col4 from t2 where b > 2 group by col3),
cte2 (c3, c4) as
(select a as col5, sum(b) as col6 from t1 where a <= 1 group by col5
union select a as col7, sum(b) as col8 from t2 where b <= 2 group by col7)
select * from cte where c1=1 union select * from cte2 where c3=3;
c1 c2
3 3
prepare st from "with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 where a > 1 group by col1
union select a as col3, sum(b) as col4 from t2 where b > 2 group by col3),
cte2 (c3, c4) as
(select a as col5, sum(b) as col6 from t1 where a <= 1 group by col5
union select a as col7, sum(b) as col8 from t2 where b <= 2 group by col7)
select * from cte where c1=1 union select * from cte2 where c3=3";
execute st;
c1 c2
3 3
execute st;
c1 c2
3 3
drop prepare st;
create procedure sp() with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 where a > 1 group by col1
union select a as col3, sum(b) as col4 from t2 where b > 2 group by col3),
cte2 (c3, c4) as
(select a as col5, sum(b) as col6 from t1 where a <= 1 group by col5
union select a as col7, sum(b) as col8 from t2 where b <= 2 group by col7)
select * from cte where c1=1 union select * from cte2 where c3=3;
call sp();
c1 c2
3 3
call sp();
c1 c2
3 3
drop procedure sp;
with cte (c1,c2) as (select * from t1)
select cte.c1+1 as col1 , cte.c2 as col2 from cte where cte.c1 > 1
union
select cte.c1 as col3, cte.c2+1 as col4 from cte where cte.c1 < 0;
col1 col2
3 1
3 2
prepare st from "with cte (c1,c2) as (select * from t1)
select cte.c1+1 as col1 , cte.c2 as col2 from cte where cte.c1 > 1
union
select cte.c1 as col3, cte.c2+1 as col4 from cte where cte.c1 < 0";
execute st;
col1 col2
3 1
3 2
execute st;
col1 col2
3 1
3 2
save this to the end to test errors >drop prepare st;
create procedure sp() with cte (c1,c2) as (select * from t1)
select cte.c1+1 as col1 , cte.c2 as col2 from cte where cte.c1 > 1
union
select cte.c1 as col3, cte.c2+1 as col4 from cte where cte.c1 < 0;
call sp();
col1 col2
3 1
3 2
call sp();
col1 col2
3 1
3 2
drop procedure sp;
insert into t1 select * from t2;
with cte (c1, c2)
as (select a, sum(b) from t1 where b > 1 group by a having sum(b) < 5)
select * from cte where c1 < 4 and c2 > 1;
c1 c2
2 2
# Check pushdown conditions in JSON output
explain format=json with cte (c1, c2)
as (select a, sum(b) from t1 where b > 1 group by a having sum(b) < 5)
select * from cte where c1 < 4 and c2 > 1;
EXPLAIN
{
"query_block": {
"select_id": 1,
"cost": "REPLACED",
"nested_loop": [
{
"table": {
"table_name": "<derived2>",
"access_type": "ALL",
"loops": 1,
"rows": 10,
"cost": "REPLACED",
"filtered": 100,
"attached_condition": "cte.c1 < 4 and cte.c2 > 1",
"materialized": {
"query_block": {
"select_id": 2,
"cost": "REPLACED",
"having_condition": "sum(t1.b) < 5 and c2 > 1",
"filesort": {
"sort_key": "t1.a",
"temporary_table": {
"nested_loop": [
{
"table": {
"table_name": "t1",
"access_type": "ALL",
"loops": 1,
"rows": 10,
"cost": "REPLACED",
"filtered": 100,
"attached_condition": "t1.b > 1 and t1.a < 4"
}
}
]
}
}
}
}
}
}
]
}
}
alter table t1 add column c int;
execute st;
ERROR HY000: WITH column list and SELECT field list have different column counts
drop prepare st;
drop table t1,t2;
Test out recursive CTEs
create table distances (src char(1), dest char(1), distance int);
create table city_population (city char(1), population int);
INSERT INTO `distances` VALUES ('A','A',0),('B','A',593),('C','A',800),
('D','A',221),('E','A',707),('F','A',869),('G','A',225),('H','A',519),
('A','B',919),('B','B',0),('C','B',440),('D','B',79),('E','B',79),
('F','B',154),('G','B',537),('H','B',220),('A','C',491),('B','C',794),
('C','C',0),('D','C',100),('E','C',350),('F','C',748),('G','C',712),
('H','C',315),('A','D',440),('B','D',256),('C','D',958),('D','D',0),
('E','D',255),('F','D',161),('G','D',63),('H','D',831),('A','E',968),
('B','E',345),('C','E',823),('D','E',81),('E','E',0),('F','E',436),
('G','E',373),('H','E',558),('A','F',670),('B','F',677),('C','F',375),
('D','F',843),('E','F',90),('F','F',0),('G','F',328),('H','F',881),
('A','G',422),('B','G',467),('C','G',67),('D','G',936),('E','G',480),
('F','G',592),('G','G',0),('H','G',819),('A','H',537),('B','H',229),
('C','H',534),('D','H',984),('E','H',319),('F','H',643),('G','H',257),
('H','H',0);
insert into city_population values ('A', 5000), ('B', 6000), ('C', 100000),
('D', 80000), ('E', 7000), ('F', 1000), ('G', 100), ('H', -80000);
#find the biggest city within 300 kellikams of 'E'
with recursive travel (src, path, dest, distance, population) as (
select city, cast('' as varchar(10)), city,
0, population
from city_population where city='E'
union all
select src.src, concat(src.path, dst.dest), dst.dest,
src.distance + dst.distance, dstc.population
from travel src
join distances dst on src.dest != dst.dest
join city_population dstc on dst.dest = dstc.city
where dst.src = src.dest and src.distance + dst.distance < 300
and length(path) < 10
)
select * from travel where dest != 'E' order by population desc, distance
limit 1;
src path dest distance population
E FD D 251 80000
prepare st from "with recursive travel (src, path, dest, distance, population) as (
select city, cast('' as varchar(10)), city,
0, population
from city_population where city='E'
union all
select src.src, concat(src.path, dst.dest), dst.dest,
src.distance + dst.distance, dstc.population
from travel src
join distances dst on src.dest != dst.dest
join city_population dstc on dst.dest = dstc.city
where dst.src = src.dest and src.distance + dst.distance < 300
and length(path) < 10
)
select * from travel where dest != 'E' order by population desc, distance
limit 1";
execute st;
src path dest distance population
E FD D 251 80000
execute st;
src path dest distance population
E FD D 251 80000
drop prepare st;
create procedure sp() with recursive travel (src, path, dest, distance, population) as (
select city, cast('' as varchar(10)), city,
0, population
from city_population where city='E'
union all
select src.src, concat(src.path, dst.dest), dst.dest,
src.distance + dst.distance, dstc.population
from travel src
join distances dst on src.dest != dst.dest
join city_population dstc on dst.dest = dstc.city
where dst.src = src.dest and src.distance + dst.distance < 300
and length(path) < 10
)
select * from travel where dest != 'E' order by population desc, distance
limit 1;
call sp();
src path dest distance population
E FD D 251 80000
call sp();
src path dest distance population
E FD D 251 80000
drop procedure sp;
drop table distances, city_population;
# End of 10.4 tests # End of 10.4 tests
...@@ -1796,4 +1796,162 @@ with data as (select 1 as id) ...@@ -1796,4 +1796,162 @@ with data as (select 1 as id)
select id into @myid from data; select id into @myid from data;
set sql_mode= @save_sql_mode; set sql_mode= @save_sql_mode;
--echo #
--echo # MDEV-31995 Bogus error executing PS for query using CTE with renaming of columns
--echo #
create table t1 (a int, b int);
insert into t1 values (1,1),(1,2),(1,3),(2,1),(2,2);
create table t2 (a int, b int);
insert into t2 values (3,1),(3,2),(3,3),(4,1),(4,2);
let $q=
with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 group by col1)
select * from cte;
eval $q;
eval prepare st from "$q";
execute st;
execute st;
drop prepare st;
eval create procedure sp() $q;
call sp();
call sp();
drop procedure sp;
let $q=
with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 order by col1)
select * from cte;
eval $q;
eval prepare st from "$q";
execute st;
execute st;
drop prepare st;
eval create procedure sp() $q;
call sp();
call sp();
drop procedure sp;
let $q=
with cte (c1,c2) as
(select a as col1, sum(b) as col2 from t1 where a > 1 group by col1
union select a as col3, sum(b) as col4 from t2 where b > 2 group by col3),
cte2 (c3, c4) as
(select a as col5, sum(b) as col6 from t1 where a <= 1 group by col5
union select a as col7, sum(b) as col8 from t2 where b <= 2 group by col7)
select * from cte where c1=1 union select * from cte2 where c3=3;
eval $q;
eval prepare st from "$q";
execute st;
execute st;
drop prepare st;
eval create procedure sp() $q;
call sp();
call sp();
drop procedure sp;
let $q=
with cte (c1,c2) as (select * from t1)
select cte.c1+1 as col1 , cte.c2 as col2 from cte where cte.c1 > 1
union
select cte.c1 as col3, cte.c2+1 as col4 from cte where cte.c1 < 0;
eval $q;
eval prepare st from "$q";
execute st;
execute st;
--echo save this to the end to test errors >drop prepare st;
eval create procedure sp() $q;
call sp();
call sp();
drop procedure sp;
insert into t1 select * from t2;
let $q=
with cte (c1, c2)
as (select a, sum(b) from t1 where b > 1 group by a having sum(b) < 5)
select * from cte where c1 < 4 and c2 > 1;
eval $q;
--echo # Check pushdown conditions in JSON output
--source include/analyze-format.inc
eval explain format=json $q;
alter table t1 add column c int;
--error ER_WITH_COL_WRONG_LIST
execute st;
drop prepare st;
drop table t1,t2;
--echo Test out recursive CTEs
create table distances (src char(1), dest char(1), distance int);
create table city_population (city char(1), population int);
INSERT INTO `distances` VALUES ('A','A',0),('B','A',593),('C','A',800),
('D','A',221),('E','A',707),('F','A',869),('G','A',225),('H','A',519),
('A','B',919),('B','B',0),('C','B',440),('D','B',79),('E','B',79),
('F','B',154),('G','B',537),('H','B',220),('A','C',491),('B','C',794),
('C','C',0),('D','C',100),('E','C',350),('F','C',748),('G','C',712),
('H','C',315),('A','D',440),('B','D',256),('C','D',958),('D','D',0),
('E','D',255),('F','D',161),('G','D',63),('H','D',831),('A','E',968),
('B','E',345),('C','E',823),('D','E',81),('E','E',0),('F','E',436),
('G','E',373),('H','E',558),('A','F',670),('B','F',677),('C','F',375),
('D','F',843),('E','F',90),('F','F',0),('G','F',328),('H','F',881),
('A','G',422),('B','G',467),('C','G',67),('D','G',936),('E','G',480),
('F','G',592),('G','G',0),('H','G',819),('A','H',537),('B','H',229),
('C','H',534),('D','H',984),('E','H',319),('F','H',643),('G','H',257),
('H','H',0);
insert into city_population values ('A', 5000), ('B', 6000), ('C', 100000),
('D', 80000), ('E', 7000), ('F', 1000), ('G', 100), ('H', -80000);
--echo #find the biggest city within 300 kellikams of 'E'
let $q=
with recursive travel (src, path, dest, distance, population) as (
select city, cast('' as varchar(10)), city,
0, population
from city_population where city='E'
union all
select src.src, concat(src.path, dst.dest), dst.dest,
src.distance + dst.distance, dstc.population
from travel src
join distances dst on src.dest != dst.dest
join city_population dstc on dst.dest = dstc.city
where dst.src = src.dest and src.distance + dst.distance < 300
and length(path) < 10
)
select * from travel where dest != 'E' order by population desc, distance
limit 1;
eval $q;
eval prepare st from "$q";
execute st;
execute st;
drop prepare st;
eval create procedure sp() $q;
call sp();
call sp();
drop procedure sp;
drop table distances, city_population;
--echo # End of 10.4 tests --echo # End of 10.4 tests
...@@ -1646,6 +1646,17 @@ SELECT JSON_OBJECTAGG('\\', 1); ...@@ -1646,6 +1646,17 @@ SELECT JSON_OBJECTAGG('\\', 1);
JSON_OBJECTAGG('\\', 1) JSON_OBJECTAGG('\\', 1)
{"\\":1} {"\\":1}
# #
# MDEV-24784 JSON_ARRAYAGG charset issue
#
set names utf8;
select json_arrayagg('ä'), json_objectagg(1, 'ä');
json_arrayagg('ä') json_objectagg(1, 'ä')
["ä"] {"1":"ä"}
set names latin1;
select json_arrayagg('ä'), json_objectagg(1, 'ä');
json_arrayagg('ä') json_objectagg(1, 'ä')
["ä"] {"1":"ä"}
#
# End of 10.5 tests # End of 10.5 tests
# #
# #
...@@ -2545,7 +2556,27 @@ SET @@collation_connection= @save_collation_connection; ...@@ -2545,7 +2556,27 @@ SET @@collation_connection= @save_collation_connection;
# #
# End of 10.9 Test # End of 10.9 Test
# #
# Beginning of 11.1 test #
# MDEV-32007: JSON_VALUE and JSON_EXTRACT doesn't handle dash (-)
# as first character in key
#
CREATE TEMPORARY TABLE IF NOT EXISTS jsonTest AS
SELECT '{ "-1234" : "something",
"12-34" : "else",
"1234-" : "and",
"1234" : "match" }' AS 'message';
SELECT JSON_SEARCH(message, 'one', 'something') AS t1_path,
JSON_VALUE(message, JSON_UNQUOTE(JSON_SEARCH(message, 'one', 'something'))) AS t1_result,
JSON_SEARCH(message, 'one', 'else') AS t2_path,
JSON_VALUE(message, JSON_UNQUOTE(JSON_SEARCH(message, 'one', 'else'))) AS t2_result,
JSON_SEARCH(message, 'one', 'and') AS t3_path,
JSON_VALUE(message, JSON_UNQUOTE(JSON_SEARCH(message, 'one', 'and'))) AS t3_result,
JSON_SEARCH(message, 'one', 'match') AS t4_path,
JSON_VALUE(message, JSON_UNQUOTE(JSON_SEARCH(message, 'one', 'match'))) AS t4_result
FROM jsonTest;
t1_path t1_result t2_path t2_result t3_path t3_result t4_path t4_result
"$.-1234" something "$.12-34" else "$.1234-" and "$.1234" match
# End of 11.0 test
# #
# MDEV-27128: Implement JSON Schema Validation FUNCTION # MDEV-27128: Implement JSON Schema Validation FUNCTION
# #
...@@ -4699,6 +4730,13 @@ NULL ...@@ -4699,6 +4730,13 @@ NULL
SELECT JSON_SCHEMA_VALID(NULL, NULL); SELECT JSON_SCHEMA_VALID(NULL, NULL);
JSON_SCHEMA_VALID(NULL, NULL) JSON_SCHEMA_VALID(NULL, NULL)
NULL NULL
#
# MDEV-31599: Assertion `0' failed in Item_param::can_return_value from Item::val_json,
# UBSAN: member access within null pointer of type 'struct String' in
# sql/item_jsonfunc.cc
#
PREPARE s FROM 'SELECT JSON_SCHEMA_VALID (?,''{}'') FROM DUAL';
ERROR HY000: Variable schema is not supported.
# End of 11.1 test # End of 11.1 test
# Beginning of 11.2 # Beginning of 11.2
# #
......
...@@ -1113,6 +1113,16 @@ SELECT JSON_OBJECTAGG('"', 1); ...@@ -1113,6 +1113,16 @@ SELECT JSON_OBJECTAGG('"', 1);
SELECT JSON_OBJECTAGG('\"', 1); SELECT JSON_OBJECTAGG('\"', 1);
SELECT JSON_OBJECTAGG('\\', 1); SELECT JSON_OBJECTAGG('\\', 1);
--echo #
--echo # MDEV-24784 JSON_ARRAYAGG charset issue
--echo #
--disable_service_connection
set names utf8;
select json_arrayagg('ä'), json_objectagg(1, 'ä');
set names latin1;
select json_arrayagg('ä'), json_objectagg(1, 'ä');
--enable_service_connection
--echo # --echo #
--echo # End of 10.5 tests --echo # End of 10.5 tests
--echo # --echo #
...@@ -1831,7 +1841,28 @@ SET @@collation_connection= @save_collation_connection; ...@@ -1831,7 +1841,28 @@ SET @@collation_connection= @save_collation_connection;
--echo # End of 10.9 Test --echo # End of 10.9 Test
--echo # --echo #
--echo # Beginning of 11.1 test --echo #
--echo # MDEV-32007: JSON_VALUE and JSON_EXTRACT doesn't handle dash (-)
--echo # as first character in key
--echo #
CREATE TEMPORARY TABLE IF NOT EXISTS jsonTest AS
SELECT '{ "-1234" : "something",
"12-34" : "else",
"1234-" : "and",
"1234" : "match" }' AS 'message';
SELECT JSON_SEARCH(message, 'one', 'something') AS t1_path,
JSON_VALUE(message, JSON_UNQUOTE(JSON_SEARCH(message, 'one', 'something'))) AS t1_result,
JSON_SEARCH(message, 'one', 'else') AS t2_path,
JSON_VALUE(message, JSON_UNQUOTE(JSON_SEARCH(message, 'one', 'else'))) AS t2_result,
JSON_SEARCH(message, 'one', 'and') AS t3_path,
JSON_VALUE(message, JSON_UNQUOTE(JSON_SEARCH(message, 'one', 'and'))) AS t3_result,
JSON_SEARCH(message, 'one', 'match') AS t4_path,
JSON_VALUE(message, JSON_UNQUOTE(JSON_SEARCH(message, 'one', 'match'))) AS t4_result
FROM jsonTest;
--echo # End of 11.0 test
--echo # --echo #
--echo # MDEV-27128: Implement JSON Schema Validation FUNCTION --echo # MDEV-27128: Implement JSON Schema Validation FUNCTION
...@@ -3670,6 +3701,15 @@ SELECT JSON_SCHEMA_VALID('{}', NULL); ...@@ -3670,6 +3701,15 @@ SELECT JSON_SCHEMA_VALID('{}', NULL);
SELECT JSON_SCHEMA_VALID(NULL, '{}'); SELECT JSON_SCHEMA_VALID(NULL, '{}');
SELECT JSON_SCHEMA_VALID(NULL, NULL); SELECT JSON_SCHEMA_VALID(NULL, NULL);
--echo #
--echo # MDEV-31599: Assertion `0' failed in Item_param::can_return_value from Item::val_json,
--echo # UBSAN: member access within null pointer of type 'struct String' in
--echo # sql/item_jsonfunc.cc
--echo #
--error ER_JSON_NO_VARIABLE_SCHEMA
PREPARE s FROM 'SELECT JSON_SCHEMA_VALID (?,''{}'') FROM DUAL';
--echo # End of 11.1 test --echo # End of 11.1 test
--echo # Beginning of 11.2 --echo # Beginning of 11.2
......
#
# MDEV-32462: mysql_upgrade -s still checks for non system tables
#
call mtr.add_suppression("Table rebuild required");
SET NAMES utf8;
# mariadb_upgrade on system and user table
show tables from mysql like '%json%';
Tables_in_mysql (%json%)
mysql_json_test
use mysql;
show create table mysql.mysql_json_test;
ERROR HY000: Unknown data type: 'MYSQL_JSON'
show create table test.mysql_json_test;
ERROR HY000: Unknown data type: 'MYSQL_JSON'
SET @old_general_log= @@global.general_log;
SET @old_log_output= @@global.log_output;
SET @@global.general_log = ON;
SET @@global.log_output = "TABLE";
The --upgrade-system-tables option was used, user tables won't be touched.
Phase 1/8: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.global_priv OK
mysql.gtid_slave_pos OK
mysql.help_category OK
mysql.help_keyword OK
mysql.help_relation OK
mysql.help_topic OK
mysql.index_stats OK
mysql.innodb_index_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
mysql.innodb_table_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
mysql.mysql_json_test
Error : Unknown data type: 'MYSQL_JSON'
error : Corrupt
mysql.plugin OK
mysql.proc OK
mysql.procs_priv OK
mysql.proxies_priv OK
mysql.roles_mapping OK
mysql.servers OK
mysql.table_stats OK
mysql.tables_priv OK
mysql.time_zone OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.transaction_registry
Error : Unknown storage engine 'InnoDB'
error : Corrupt
Repairing tables
mysql.innodb_index_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
mysql.innodb_table_stats
Error : Unknown storage engine 'InnoDB'
error : Corrupt
mysql.mysql_json_test
Error : Unknown data type: 'MYSQL_JSON'
error : Corrupt
mysql.transaction_registry
Error : Unknown storage engine 'InnoDB'
error : Corrupt
Phase 2/8: Installing used storage engines... Skipped
Phase 3/8: Running 'mysql_fix_privilege_tables'
Phase 4/8: Fixing views... Skipped
Phase 5/8: Fixing table and database names ... Skipped
Phase 6/8: Checking and upgrading tables... Skipped
Phase 7/8: uninstalling plugins
Phase 8/8: Running 'FLUSH PRIVILEGES'
OK
SET @@global.general_log = @old_general_log;
SET @@global.log_output = @old_log_output;
select command_type, argument from mysql.general_log where argument like "%SELECT table_comment FROM information_schema.tables%";
command_type argument
show create table mysql.mysql_json_test;
ERROR HY000: Unknown data type: 'MYSQL_JSON'
show create table test.mysql_json_test;
ERROR HY000: Unknown data type: 'MYSQL_JSON'
drop table mysql.mysql_json_test;
drop table test.mysql_json_test;
#
# End of 10.5 tests
#
--echo #
--echo # MDEV-32462: mysql_upgrade -s still checks for non system tables
--echo #
# Let's now load plugin first
--source include/have_utf8.inc
--source include/not_embedded.inc
--source include/mysql_upgrade_preparation.inc
call mtr.add_suppression("Table rebuild required");
SET NAMES utf8;
let $MYSQLD_DATADIR= `select @@datadir`;
--echo # mariadb_upgrade on system and user table
--copy_file std_data/mysql_json/mysql_json_test.frm $MYSQLD_DATADIR/mysql/mysql_json_test.frm
--copy_file std_data/mysql_json/mysql_json_test.MYI $MYSQLD_DATADIR/mysql/mysql_json_test.MYI
--copy_file std_data/mysql_json/mysql_json_test.MYD $MYSQLD_DATADIR/mysql/mysql_json_test.MYD
--copy_file std_data/mysql_json/mysql_json_test.frm $MYSQLD_DATADIR/test/mysql_json_test.frm
--copy_file std_data/mysql_json/mysql_json_test.MYI $MYSQLD_DATADIR/test/mysql_json_test.MYI
--copy_file std_data/mysql_json/mysql_json_test.MYD $MYSQLD_DATADIR/test/mysql_json_test.MYD
show tables from mysql like '%json%';
use mysql;
--error ER_UNKNOWN_DATA_TYPE
show create table mysql.mysql_json_test;
--error ER_UNKNOWN_DATA_TYPE
show create table test.mysql_json_test;
SET @old_general_log= @@global.general_log;
SET @old_log_output= @@global.log_output;
SET @@global.general_log = ON;
SET @@global.log_output = "TABLE";
--exec $MYSQL_UPGRADE -s --force 2>&1
--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info
SET @@global.general_log = @old_general_log;
SET @@global.log_output = @old_log_output;
select command_type, argument from mysql.general_log where argument like "%SELECT table_comment FROM information_schema.tables%";
# User table is not upgraded in `mysql\test` DB, so we cannot see it.
--error ER_UNKNOWN_DATA_TYPE
show create table mysql.mysql_json_test;
--error ER_UNKNOWN_DATA_TYPE
show create table test.mysql_json_test;
drop table mysql.mysql_json_test;
drop table test.mysql_json_test;
--echo #
--echo # End of 10.5 tests
--echo #
...@@ -306,3 +306,13 @@ a b c ...@@ -306,3 +306,13 @@ a b c
6 2 26 6 2 26
6 3 36 6 3 36
drop table t1; drop table t1;
#
# MDEV-31116: SIGSEGV in test_if_skip_sort_order|JOIN::optimize_stage2
#
CREATE TABLE t1 (a BINARY (2),b BINARY (1),KEY(a)) ENGINE=innodb;
INSERT INTO t1 select 'ab', NULL from seq_1_to_14;
SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 WHERE a >'') ORDER BY a LIMIT 1;
a b
ab NULL
DROP TABLE t1;
# End of 11.0 tests
...@@ -252,3 +252,12 @@ explain select * from t1 force index(r) order by a,b limit 20; ...@@ -252,3 +252,12 @@ explain select * from t1 force index(r) order by a,b limit 20;
explain select * from t1 force index(r) order by a desc,b limit 20; explain select * from t1 force index(r) order by a desc,b limit 20;
select * from t1 force index(r) order by a desc,b limit 20; select * from t1 force index(r) order by a desc,b limit 20;
drop table t1; drop table t1;
--echo #
--echo # MDEV-31116: SIGSEGV in test_if_skip_sort_order|JOIN::optimize_stage2
--echo #
CREATE TABLE t1 (a BINARY (2),b BINARY (1),KEY(a)) ENGINE=innodb;
INSERT INTO t1 select 'ab', NULL from seq_1_to_14;
SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 WHERE a >'') ORDER BY a LIMIT 1;
DROP TABLE t1;
--echo # End of 11.0 tests
...@@ -18,6 +18,12 @@ galera_bf_kill_debug : timeout after 900 seconds ...@@ -18,6 +18,12 @@ galera_bf_kill_debug : timeout after 900 seconds
galera_ssl_upgrade : [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 130: Incorrect file format 'gtid_slave_pos' galera_ssl_upgrade : [Warning] Failed to load slave replication state from table mysql.gtid_slave_pos: 130: Incorrect file format 'gtid_slave_pos'
galera_parallel_simple : timeout related to wsrep_sync_wait galera_parallel_simple : timeout related to wsrep_sync_wait
galera_insert_bulk : MDEV-30536 no expected deadlock in galera_insert_bulk test galera_insert_bulk : MDEV-30536 no expected deadlock in galera_insert_bulk test
versioning_trx_id : MDEV-18590: galera.versioning_trx_id: Test failure: mysqltest: Result content mismatch galera_sequences : MDEV-32561 WSREP FSM failure: no such a transition REPLICATING -> COMMITTED
galera_sequences : MDEV-32024 galera_shutdown_nonprim : MDEV-32635 galera_shutdown_nonprim: mysql_shutdown failed
versioning_trx_id : MDEV-18590 : galera.versioning_trx_id: Test failure: mysqltest: Result content mismatch
galera_concurrent_ctas : MDEV-32779 galera_concurrent_ctas: assertion in the galera::ReplicatorSMM::finish_cert()
galera_as_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback()
galera_slave_replay : MDEV-32780 galera_as_slave_replay: assertion in the wsrep::transaction::before_rollback()
galera_bf_lock_wait : MDEV-32781 galera_bf_lock_wait test failed
galera_sst_mysqldump_with_key : MDEV-32782 galera_sst_mysqldump_with_key test failed
mdev-31285 : MDEV-25089 Assertion `error.len > 0' failed in galera::ReplicatorSMM::handle_apply_error() mdev-31285 : MDEV-25089 Assertion `error.len > 0' failed in galera::ReplicatorSMM::handle_apply_error()
...@@ -3,9 +3,9 @@ ...@@ -3,9 +3,9 @@
# #
# The galera/galera_2node_slave.cnf describes the setup of the nodes # The galera/galera_2node_slave.cnf describes the setup of the nodes
# #
--source include/big_test.inc
--source include/force_restart.inc --source include/force_restart.inc
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_sequence.inc --source include/have_sequence.inc
# As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it # As node #3 is not a Galera node, and galera_cluster.inc does not open connetion to it
......
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
# #
############################################################################## ##############################################################################
galera_2_cluster : MDEV-29877 Galera test failure on galera_2_cluster galera_2_cluster : MDEV-32631 galera_2_cluster: before_rollback(): Assertion `0' failed
galera_gtid_2_cluster : MDEV-29877 Galera test failure on galera_2_cluster galera_gtid_2_cluster : MDEV-32633 galera_gtid_2_cluster: Assertion `thd->wsrep_next_trx_id() != (0x7fffffffffffffffLL * 2ULL + 1)'
galera_ipv6_mariabackup : MDEV-24097 galera_ipv6_mariabackup : MDEV-24097
galera_ipv6_mariabackup_section : MDEV-24097, MDEV-22195 galera_ipv6_mariabackup_section : MDEV-24097, MDEV-22195
galera_vote_rejoin_mysqldump : MDEV-24481: galera_3nodes.galera_vote_rejoin_mysqldump MTR failed: mysql_shutdown failed galera_vote_rejoin_mysqldump : MDEV-24481: galera_3nodes.galera_vote_rejoin_mysqldump MTR failed: mysql_shutdown failed
galera_ssl_reload : MDEV-30172 At line 50: mysql_shutdown failed galera_ssl_reload : MDEV-32778 galera_ssl_reload failed with warning message
# Opensuse/suse/rocky9/rocky84/rhel9/rhel8-ppc64le .. - all same IPv6 isn't configured right or skipping or galera # Opensuse/suse/rocky9/rocky84/rhel9/rhel8-ppc64le .. - all same IPv6 isn't configured right or skipping or galera
galera_ipv6_rsync : Can't connect to server on '::1' (115) galera_ipv6_rsync : Can't connect to server on '::1' (115)
galera_ipv6_rsync_section : Can't connect to server on '::1' (115) galera_ipv6_rsync_section : Can't connect to server on '::1' (115)
...@@ -10,8 +10,7 @@ ...@@ -10,8 +10,7 @@
# #
############################################################################## ##############################################################################
GCF-1060 : MDEV-26528 wrong usage of mutex LOCK_thd_kill and LOCK_thd_kill GCF-1060 : MDEV-32160 GCF-1060 test failure due to wsrep MDL conflict
galera_sr_cc_master : MDEV-29882 Galera test failure on galera_sr_cc_master galera_sr_cc_master : MDEV-29882 Galera test failure on galera_sr_cc_master
mysql-wsrep-features#138 : At line 25: query 'DROP TABLE t1' failed: 2013: Lost connection to MySQL server during query
# Links to below failures in MDEV-30172 # Links to below failures in MDEV-30172
MDEV-25718 : timeout related to wsrep_sync_wait and DEBUG_SYNC MDEV-25718 : timeout related to wsrep_sync_wait and DEBUG_SYNC
SET @@session.default_storage_engine = 'InnoDB'; SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
SET default_storage_engine = 'InnoDB';
drop table if exists t1; drop table if exists t1;
# Case 1. Partitioning by RANGE based on a non-stored generated column. # Case 1. Partitioning by RANGE based on a non-stored generated column.
CREATE TABLE t1 ( CREATE TABLE t1 (
...@@ -126,6 +128,7 @@ Warnings: ...@@ -126,6 +128,7 @@ Warnings:
Warning 1906 The value specified for generated column 'vd' in table 't1' has been ignored Warning 1906 The value specified for generated column 'vd' in table 't1' has been ignored
DROP TABLE t1; DROP TABLE t1;
InnoDB 0 transactions not purged InnoDB 0 transactions not purged
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
DROP VIEW IF EXISTS v1,v2; DROP VIEW IF EXISTS v1,v2;
DROP TABLE IF EXISTS t1,t2,t3; DROP TABLE IF EXISTS t1,t2,t3;
DROP PROCEDURE IF EXISTS p1; DROP PROCEDURE IF EXISTS p1;
......
SET @save_dbug=@@GLOBAL.debug_dbug; SET @save_dbug=@@GLOBAL.debug_dbug;
CREATE TABLE t1(f1 INT NOT NULL, f2 int not null, CREATE TABLE t1(f1 INT NOT NULL, f2 int not null,
f3 int generated always as (f2 * 2) VIRTUAL, f3 int generated always as (f2 * 2) VIRTUAL,
primary key(f1), INDEX (f3))ENGINE=InnoDB; primary key(f1), INDEX (f3))ENGINE=InnoDB STATS_PERSISTENT=0;
connect con1,localhost,root,,,; connect con1,localhost,root,,,;
InnoDB 0 transactions not purged InnoDB 0 transactions not purged
START TRANSACTION WITH CONSISTENT SNAPSHOT; START TRANSACTION WITH CONSISTENT SNAPSHOT;
......
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
connect purge_control,localhost,root; connect purge_control,localhost,root;
START TRANSACTION WITH CONSISTENT SNAPSHOT; START TRANSACTION WITH CONSISTENT SNAPSHOT;
connection default; connection default;
...@@ -37,3 +39,4 @@ InnoDB 0 transactions not purged ...@@ -37,3 +39,4 @@ InnoDB 0 transactions not purged
disconnect purge_control; disconnect purge_control;
connection default; connection default;
drop table t1; drop table t1;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
set default_storage_engine=innodb; set default_storage_engine=innodb;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
CREATE TABLE `t` ( CREATE TABLE `t` (
`a` VARCHAR(100), `a` VARCHAR(100),
`b` VARCHAR(100), `b` VARCHAR(100),
...@@ -145,3 +147,4 @@ DROP TABLE t1; ...@@ -145,3 +147,4 @@ DROP TABLE t1;
disconnect con1; disconnect con1;
connection default; connection default;
SET DEBUG_SYNC=RESET; SET DEBUG_SYNC=RESET;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
# #
# Bug#21869656 UNDO LOG DOES NOT CONTAIN ENOUGH INFORMATION # Bug#21869656 UNDO LOG DOES NOT CONTAIN ENOUGH INFORMATION
# ON INDEXED VIRTUAL COLUMNS # ON INDEXED VIRTUAL COLUMNS
...@@ -171,3 +173,4 @@ CHECK TABLE t EXTENDED; ...@@ -171,3 +173,4 @@ CHECK TABLE t EXTENDED;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t check status OK test.t check status OK
DROP TABLE t; DROP TABLE t;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
##### Storage engine to be tested ##### Storage engine to be tested
# Set the session storage engine # Set the session storage engine
--source include/have_innodb.inc --source include/have_innodb.inc
eval SET @@session.default_storage_engine = 'InnoDB'; SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
SET default_storage_engine = 'InnoDB';
##### Workarounds for known open engine specific bugs ##### Workarounds for known open engine specific bugs
# none # none
...@@ -58,6 +60,9 @@ REPLACE INTO t1 SELECT * FROM t1; ...@@ -58,6 +60,9 @@ REPLACE INTO t1 SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
--source suite/innodb/include/wait_all_purged.inc --source suite/innodb/include/wait_all_purged.inc
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#
# Cleanup # Cleanup
--source suite/gcol/inc/gcol_cleanup.inc --source suite/gcol/inc/gcol_cleanup.inc
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
SET @save_dbug=@@GLOBAL.debug_dbug; SET @save_dbug=@@GLOBAL.debug_dbug;
CREATE TABLE t1(f1 INT NOT NULL, f2 int not null, CREATE TABLE t1(f1 INT NOT NULL, f2 int not null,
f3 int generated always as (f2 * 2) VIRTUAL, f3 int generated always as (f2 * 2) VIRTUAL,
primary key(f1), INDEX (f3))ENGINE=InnoDB; primary key(f1), INDEX (f3))ENGINE=InnoDB STATS_PERSISTENT=0;
connect(con1,localhost,root,,,); connect(con1,localhost,root,,,);
--source ../innodb/include/wait_all_purged.inc --source ../innodb/include/wait_all_purged.inc
START TRANSACTION WITH CONSISTENT SNAPSHOT; START TRANSACTION WITH CONSISTENT SNAPSHOT;
......
--source include/have_innodb.inc --source include/have_innodb.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
connect (purge_control,localhost,root); connect (purge_control,localhost,root);
START TRANSACTION WITH CONSISTENT SNAPSHOT; START TRANSACTION WITH CONSISTENT SNAPSHOT;
...@@ -60,3 +63,5 @@ disconnect purge_control; ...@@ -60,3 +63,5 @@ disconnect purge_control;
connection default; connection default;
drop table t1; drop table t1;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
--source include/count_sessions.inc --source include/count_sessions.inc
set default_storage_engine=innodb; set default_storage_engine=innodb;
# Ensure that the history list length will actually be decremented by purge.
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
CREATE TABLE `t` ( CREATE TABLE `t` (
`a` VARCHAR(100), `a` VARCHAR(100),
`b` VARCHAR(100), `b` VARCHAR(100),
...@@ -338,4 +342,6 @@ DROP TABLE t1; ...@@ -338,4 +342,6 @@ DROP TABLE t1;
connection default; connection default;
SET DEBUG_SYNC=RESET; SET DEBUG_SYNC=RESET;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
--source include/wait_until_count_sessions.inc --source include/wait_until_count_sessions.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/count_sessions.inc --source include/count_sessions.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
--echo # --echo #
--echo # Bug#21869656 UNDO LOG DOES NOT CONTAIN ENOUGH INFORMATION --echo # Bug#21869656 UNDO LOG DOES NOT CONTAIN ENOUGH INFORMATION
--echo # ON INDEXED VIRTUAL COLUMNS --echo # ON INDEXED VIRTUAL COLUMNS
...@@ -182,4 +185,6 @@ SET GLOBAL innodb_max_purge_lag_wait=0; ...@@ -182,4 +185,6 @@ SET GLOBAL innodb_max_purge_lag_wait=0;
CHECK TABLE t EXTENDED; CHECK TABLE t EXTENDED;
DROP TABLE t; DROP TABLE t;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
--source include/wait_until_count_sessions.inc --source include/wait_until_count_sessions.inc
# #
# Bug#16720368 INNODB CRASHES ON BROKEN #SQL*.IBD FILE AT STARTUP # Bug#16720368 INNODB CRASHES ON BROKEN #SQL*.IBD FILE AT STARTUP
# #
SET GLOBAL innodb_stats_persistent=0;
CREATE TABLE bug16720368_1 (a INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE bug16720368_1 (a INT PRIMARY KEY) ENGINE=InnoDB;
connect con1,localhost,root; connect con1,localhost,root;
CREATE TABLE bug16720368 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB; CREATE TABLE bug16720368 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB;
......
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
# #
# MDEV-12288 Reset DB_TRX_ID when the history is removed, # MDEV-12288 Reset DB_TRX_ID when the history is removed,
# to speed up MVCC # to speed up MVCC
...@@ -46,3 +48,4 @@ a b c ...@@ -46,3 +48,4 @@ a b c
1 2 NULL 1 2 NULL
3 -3 NULL 3 -3 NULL
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
# #
# Bug #19027905 ASSERT RET.SECOND DICT_CREATE_FOREIGN_CONSTRAINTS_LOW # Bug #19027905 ASSERT RET.SECOND DICT_CREATE_FOREIGN_CONSTRAINTS_LOW
# DICT_CREATE_FOREIGN_CONSTR # DICT_CREATE_FOREIGN_CONSTR
...@@ -154,6 +155,8 @@ INSERT INTO parent SET a=0; ...@@ -154,6 +155,8 @@ INSERT INTO parent SET a=0;
FLUSH TABLES; FLUSH TABLES;
# restart # restart
disconnect incomplete; disconnect incomplete;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
INSERT INTO child SET a=0; INSERT INTO child SET a=0;
INSERT INTO child SET a=1; INSERT INTO child SET a=1;
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`a`) REFERENCES `parent` (`a`) ON DELETE CASCADE) ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`a`) REFERENCES `parent` (`a`) ON DELETE CASCADE)
...@@ -1074,3 +1077,4 @@ test.collections check status OK ...@@ -1074,3 +1077,4 @@ test.collections check status OK
disconnect con1; disconnect con1;
DROP TABLE binaries, collections; DROP TABLE binaries, collections;
# End of 10.6 tests # End of 10.6 tests
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
FLUSH TABLES; FLUSH TABLES;
# Treating compact format as dynamic format after import stmt # Treating compact format as dynamic format after import stmt
CREATE TABLE t1 CREATE TABLE t1
...@@ -200,3 +202,4 @@ a ...@@ -200,3 +202,4 @@ a
3 3
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL innodb_compression_algorithm=@save_algo; SET GLOBAL innodb_compression_algorithm=@save_algo;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
CREATE TABLE tab(a BIGINT PRIMARY KEY,c1 TINYTEXT,c2 TEXT,c3 MEDIUMTEXT, CREATE TABLE tab(a BIGINT PRIMARY KEY,c1 TINYTEXT,c2 TEXT,c3 MEDIUMTEXT,
c4 TINYBLOB,c5 BLOB,c6 MEDIUMBLOB,c7 LONGBLOB) ENGINE=InnoDB; c4 TINYBLOB,c5 BLOB,c6 MEDIUMBLOB,c7 LONGBLOB) ENGINE=InnoDB;
CREATE INDEX index1 ON tab(c1(255)) COMMENT 'Check index level merge MERGE_THRESHOLD=51'; CREATE INDEX index1 ON tab(c1(255)) COMMENT 'Check index level merge MERGE_THRESHOLD=51';
...@@ -1307,3 +1309,4 @@ name count_reset ...@@ -1307,3 +1309,4 @@ name count_reset
index_page_merge_attempts 2 index_page_merge_attempts 2
index_page_merge_successful 2 index_page_merge_successful 2
DROP TABLE tab1; DROP TABLE tab1;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
call mtr.add_suppression("InnoDB: Cannot add field .* in table"); call mtr.add_suppression("InnoDB: Cannot add field .* in table");
# Test 1) Show the page size from Information Schema # Test 1) Show the page size from Information Schema
SELECT variable_value FROM information_schema.global_status SELECT variable_value FROM information_schema.global_status
...@@ -505,6 +507,7 @@ INSERT INTO t1 VALUES(REPEAT('A',512)),(REPEAT('B',512)); ...@@ -505,6 +507,7 @@ INSERT INTO t1 VALUES(REPEAT('A',512)),(REPEAT('B',512));
DROP TABLE t1; DROP TABLE t1;
InnoDB 0 transactions not purged InnoDB 0 transactions not purged
SET GLOBAL innodb_compression_level=@save_level; SET GLOBAL innodb_compression_level=@save_level;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge; DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge;
DROP TABLE tlong; DROP TABLE tlong;
DROP TABLE tlong2; DROP TABLE tlong2;
SET GLOBAL innodb_stats_persistent = 0;
call mtr.add_suppression("Innodb: Cannot add field.*row size is"); call mtr.add_suppression("Innodb: Cannot add field.*row size is");
# Test 1) Show the page size from Information Schema # Test 1) Show the page size from Information Schema
SELECT variable_value FROM information_schema.global_status SELECT variable_value FROM information_schema.global_status
......
SET GLOBAL innodb_monitor_reset_all=all;
SET GLOBAL innodb_monitor_reset_all=default;
call mtr.add_suppression("InnoDB: Warning: Small buffer pool size"); call mtr.add_suppression("InnoDB: Warning: Small buffer pool size");
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT, c3 TEXT) CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT, c3 TEXT)
ENGINE=InnoDB STATS_PERSISTENT=0; ENGINE=InnoDB STATS_PERSISTENT=0;
...@@ -153,6 +155,7 @@ test t1_c2_stats GEN_CLUST_INDEX LAST_UPDATE size 1 NULL Number of pages in the ...@@ -153,6 +155,7 @@ test t1_c2_stats GEN_CLUST_INDEX LAST_UPDATE size 1 NULL Number of pages in the
connection con1; connection con1;
KILL QUERY @id; KILL QUERY @id;
ERROR 70100: Query execution was interrupted ERROR 70100: Query execution was interrupted
SET GLOBAL innodb_max_purge_lag_wait=0;
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2d_created WAIT_FOR kill_done'; SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2d_created WAIT_FOR kill_done';
CREATE INDEX c2d ON t1(c2); CREATE INDEX c2d ON t1(c2);
connection default; connection default;
...@@ -219,13 +222,13 @@ t1 CREATE TABLE `t1` ( ...@@ -219,13 +222,13 @@ t1 CREATE TABLE `t1` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci STATS_PERSISTENT=1 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci STATS_PERSISTENT=1
connection default; connection default;
SET @merge_encrypt_0= SET @merge_encrypt_0=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
SET @merge_decrypt_0= SET @merge_decrypt_0=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
SET @rowlog_encrypt_0= SET @rowlog_encrypt_0=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
connection con1; connection con1;
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2e_created WAIT_FOR dml2_done'; SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2e_created WAIT_FOR dml2_done';
...@@ -272,13 +275,13 @@ name pos ...@@ -272,13 +275,13 @@ name pos
c2 0 c2 0
c3 1 c3 1
SET @merge_encrypt_1= SET @merge_encrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
SET @merge_decrypt_1= SET @merge_decrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
SET @rowlog_encrypt_1= SET @rowlog_encrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
SELECT SELECT
(@merge_encrypt_1-@merge_encrypt_0)- (@merge_encrypt_1-@merge_encrypt_0)-
...@@ -318,16 +321,16 @@ ddl_pending_alter_table 0 ...@@ -318,16 +321,16 @@ ddl_pending_alter_table 0
ddl_sort_file_alter_table 0 ddl_sort_file_alter_table 0
ddl_log_file_alter_table 1 ddl_log_file_alter_table 1
SET @merge_encrypt_1= SET @merge_encrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
SET @merge_decrypt_1= SET @merge_decrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
SET @rowlog_encrypt_1= SET @rowlog_encrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
SET @rowlog_decrypt_1= SET @rowlog_decrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted');
connection con1; connection con1;
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2f_created WAIT_FOR dml3_done'; SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2f_created WAIT_FOR dml3_done';
...@@ -403,16 +406,16 @@ ddl_sort_file_alter_table 0 ...@@ -403,16 +406,16 @@ ddl_sort_file_alter_table 0
ddl_log_file_alter_table 2 ddl_log_file_alter_table 2
connection default; connection default;
SET @merge_encrypt_2= SET @merge_encrypt_2=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
SET @merge_decrypt_2= SET @merge_decrypt_2=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
SET @rowlog_encrypt_2= SET @rowlog_encrypt_2=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
SET @rowlog_decrypt_2= SET @rowlog_decrypt_2=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted');
SELECT SELECT
(@merge_encrypt_2-@merge_encrypt_1)- (@merge_encrypt_2-@merge_encrypt_1)-
......
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
SELECT table_id INTO @table_stats_id FROM information_schema.innodb_sys_tables SELECT table_id INTO @table_stats_id FROM information_schema.innodb_sys_tables
WHERE name = 'mysql/innodb_table_stats'; WHERE name = 'mysql/innodb_table_stats';
SELECT table_id INTO @index_stats_id FROM information_schema.innodb_sys_tables SELECT table_id INTO @index_stats_id FROM information_schema.innodb_sys_tables
...@@ -176,3 +178,4 @@ DROP TABLE parent; ...@@ -176,3 +178,4 @@ DROP TABLE parent;
SELECT SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE name like 'innodb_temporary'; SELECT SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE name like 'innodb_temporary';
SPACE SPACE
4294967294 4294967294
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
CREATE TABLE t1(f1 int auto_increment primary key, CREATE TABLE t1(f1 int auto_increment primary key,
f2 varchar(256), f2 varchar(256),
f3 text) engine = innodb; f3 text) engine = innodb stats_persistent=0;
FLUSH TABLE t1 FOR EXPORT; FLUSH TABLE t1 FOR EXPORT;
UNLOCK TABLES; UNLOCK TABLES;
FOUND 500500 /unicycle|repairman/ in t1.ibd FOUND 500500 /unicycle|repairman/ in t1.ibd
......
...@@ -57,7 +57,7 @@ connection con1; ...@@ -57,7 +57,7 @@ connection con1;
EXPLAIN SELECT * FROM t2 WHERE val=4; EXPLAIN SELECT * FROM t2 WHERE val=4;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ref val val 4 const 1 Using index 1 SIMPLE t2 ref val val 4 const 1 Using index
InnoDB 0 transactions not purged SET GLOBAL innodb_max_purge_lag_wait=0;
# After COMMIT and purge, the DELETE must show up. # After COMMIT and purge, the DELETE must show up.
EXPLAIN SELECT * FROM t1 WHERE val=4; EXPLAIN SELECT * FROM t1 WHERE val=4;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
......
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
# #
# MDEV-11369: Instant ADD COLUMN for InnoDB # MDEV-11369: Instant ADD COLUMN for InnoDB
# #
...@@ -2937,3 +2939,4 @@ index(id, msg) ...@@ -2937,3 +2939,4 @@ index(id, msg)
FLUSH TABLES; FLUSH TABLES;
ALTER TABLE mdev28822_100427_innodb ADD i1 INTEGER, ALGORITHM=INSTANT; ALTER TABLE mdev28822_100427_innodb ADD i1 INTEGER, ALGORITHM=INSTANT;
DROP TABLE mdev28822_100427_innodb; DROP TABLE mdev28822_100427_innodb;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
# #
# MDEV-17821 Assertion `!page_rec_is_supremum(rec)' failed # MDEV-17821 Assertion `!page_rec_is_supremum(rec)' failed
# in btr_pcur_store_position # in btr_pcur_store_position
...@@ -492,3 +494,5 @@ CREATE TABLE t1 (i int AS (0) STORED, j INT) ENGINE=InnoDB; ...@@ -492,3 +494,5 @@ CREATE TABLE t1 (i int AS (0) STORED, j INT) ENGINE=InnoDB;
ALTER TABLE t1 ADD COLUMN i INT GENERATED ALWAYS AS (1), DROP COLUMN i; ALTER TABLE t1 ADD COLUMN i INT GENERATED ALWAYS AS (1), DROP COLUMN i;
DROP TABLE t1; DROP TABLE t1;
# End of 10.4 tests # End of 10.4 tests
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
# End of 10.6 tests
...@@ -3,7 +3,7 @@ FLUSH TABLES; ...@@ -3,7 +3,7 @@ FLUSH TABLES;
# MDEV-11369: Instant ADD COLUMN for InnoDB # MDEV-11369: Instant ADD COLUMN for InnoDB
# #
CREATE TABLE t1(id INT PRIMARY KEY, c2 INT UNIQUE) CREATE TABLE t1(id INT PRIMARY KEY, c2 INT UNIQUE)
ENGINE=InnoDB ROW_FORMAT=REDUNDANT; ENGINE=InnoDB STATS_PERSISTENT=0 ROW_FORMAT=REDUNDANT;
CREATE TABLE t2 LIKE t1; CREATE TABLE t2 LIKE t1;
INSERT INTO t1 VALUES(0,2); INSERT INTO t1 VALUES(0,2);
INSERT INTO t2 VALUES(2,1); INSERT INTO t2 VALUES(2,1);
...@@ -160,7 +160,7 @@ t1 CREATE TABLE `t1` ( ...@@ -160,7 +160,7 @@ t1 CREATE TABLE `t1` (
`c2` int(11) DEFAULT NULL, `c2` int(11) DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `c2` (`c2`) UNIQUE KEY `c2` (`c2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=REDUNDANT ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci STATS_PERSISTENT=0 ROW_FORMAT=REDUNDANT
SHOW CREATE TABLE t2; SHOW CREATE TABLE t2;
Table Create Table Table Create Table
t2 CREATE TABLE `t2` ( t2 CREATE TABLE `t2` (
...@@ -168,7 +168,7 @@ t2 CREATE TABLE `t2` ( ...@@ -168,7 +168,7 @@ t2 CREATE TABLE `t2` (
`c2` int(11) DEFAULT NULL, `c2` int(11) DEFAULT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `c2` (`c2`) UNIQUE KEY `c2` (`c2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=REDUNDANT ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci STATS_PERSISTENT=0 ROW_FORMAT=REDUNDANT
SHOW CREATE TABLE t3; SHOW CREATE TABLE t3;
Table Create Table Table Create Table
t3 CREATE TABLE `t3` ( t3 CREATE TABLE `t3` (
......
@@ -527,4 +527,4 @@ @@ -527,6 +527,6 @@
FROM information_schema.global_status FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column'; WHERE variable_name = 'innodb_instant_alter_column';
instants instants
-35 -35
+36 +36
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
# End of 10.6 tests
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
SET @old_instant= SET @old_instant=
(SELECT variable_value FROM information_schema.global_status (SELECT variable_value FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column'); WHERE variable_name = 'innodb_instant_alter_column');
...@@ -518,3 +520,5 @@ FROM information_schema.global_status ...@@ -518,3 +520,5 @@ FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column'; WHERE variable_name = 'innodb_instant_alter_column';
instants instants
35 35
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
# End of 10.6 tests
...@@ -5,7 +5,7 @@ InnoDB 0 transactions not purged ...@@ -5,7 +5,7 @@ InnoDB 0 transactions not purged
connect prevent_purge,localhost,root; connect prevent_purge,localhost,root;
START TRANSACTION WITH CONSISTENT SNAPSHOT; START TRANSACTION WITH CONSISTENT SNAPSHOT;
connection default; connection default;
CREATE TABLE t1 (f1 INT, f2 INT) ENGINE=InnoDB; CREATE TABLE t1 (f1 INT, f2 INT) ENGINE=InnoDB STATS_PERSISTENT=0;
INSERT INTO t1 () VALUES (); INSERT INTO t1 () VALUES ();
ALTER TABLE t1 DROP f2, ADD COLUMN f2 INT; ALTER TABLE t1 DROP f2, ADD COLUMN f2 INT;
ALTER TABLE t1 DROP f1; ALTER TABLE t1 DROP f1;
......
SET GLOBAL innodb_stats_persistent = 0;
FLUSH TABLES; FLUSH TABLES;
# #
# MDEV-11369: Instant ADD COLUMN for InnoDB # MDEV-11369: Instant ADD COLUMN for InnoDB
......
#
# MDEV-24670 avoid OOM by linux kernel co-operative memory management
#
set @save_dbug=@@debug_dbug;
set @save_limit=@@GLOBAL.innodb_limit_optimistic_insert_debug;
set GLOBAL innodb_max_purge_lag_wait=0;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
SET GLOBAL innodb_limit_optimistic_insert_debug=2;
SET STATEMENT unique_checks=0, foreign_key_checks=0 FOR
INSERT INTO t1 SELECT * FROM seq_1_to_1000;
SET GLOBAL innodb_limit_optimistic_insert_debug=@save_limit;
DROP TABLE t1;
SELECT CAST(VARIABLE_VALUE AS INTEGER) INTO @dirty_prev
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
set debug_dbug="d,trigger_garbage_collection";
SET GLOBAL innodb_buffer_pool_size=@@innodb_buffer_pool_size;
SELECT CAST(VARIABLE_VALUE AS INTEGER) < @dirty_prev AS LESS_DIRTY_IS_GOOD
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
LESS_DIRTY_IS_GOOD
1
FOUND 1 /InnoDB: Memory pressure event freed.*/ in mysqld.1.err
set debug_dbug=@save_dbug;
# End of 10.11 tests
# Set the environmental variables # Set the environmental variables
create table t1(f1 int not null)engine=innodb; create table t1(f1 int not null)engine=innodb stats_persistent=0;
insert into t1 values(1), (2), (3); insert into t1 values(1), (2), (3);
# Change the page offset # Change the page offset
FOUND 1 /page id mismatch/ in result.log FOUND 1 /page id mismatch/ in result.log
......
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
# Bug #12429576 - Test an assertion failure on purge. # Bug #12429576 - Test an assertion failure on purge.
CREATE TABLE t1_purge ( CREATE TABLE t1_purge (
A int, A int,
...@@ -115,4 +117,5 @@ t12963823 CREATE TABLE `t12963823` ( ...@@ -115,4 +117,5 @@ t12963823 CREATE TABLE `t12963823` (
KEY `ndx_p` (`p`(500)) KEY `ndx_p` (`p`(500))
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=DYNAMIC ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=DYNAMIC
InnoDB 0 transactions not purged InnoDB 0 transactions not purged
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge, t12637786, t12963823; DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge, t12637786, t12963823;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
CREATE TABLE t1 ( CREATE TABLE t1 (
a SERIAL, b CHAR(255) NOT NULL DEFAULT '', c BOOLEAN DEFAULT false, a SERIAL, b CHAR(255) NOT NULL DEFAULT '', c BOOLEAN DEFAULT false,
l LINESTRING NOT NULL DEFAULT ST_linefromtext('linestring(448 -689, l LINESTRING NOT NULL DEFAULT ST_linefromtext('linestring(448 -689,
...@@ -167,3 +169,5 @@ page 5: N_RECS=0x0001 ...@@ -167,3 +169,5 @@ page 5: N_RECS=0x0001
UNLOCK TABLES; UNLOCK TABLES;
DROP TABLE t1; DROP TABLE t1;
# End of 10.3 tests # End of 10.3 tests
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
# End of 10.6 tests
...@@ -37,6 +37,8 @@ SELECT * FROM t; ...@@ -37,6 +37,8 @@ SELECT * FROM t;
a a
3 3
SET GLOBAL innodb_max_purge_lag_wait=0; SET GLOBAL innodb_max_purge_lag_wait=0;
INSERT INTO mysql.innodb_index_stats
SELECT * FROM mysql.innodb_index_stats LIMIT 0;
# restart # restart
SELECT * FROM t; SELECT * FROM t;
a a
......
...@@ -69,7 +69,6 @@ Warning 1932 Table 'test.t1' doesn't exist in engine ...@@ -69,7 +69,6 @@ Warning 1932 Table 'test.t1' doesn't exist in engine
DROP TABLE t2,t3; DROP TABLE t2,t3;
FOUND 1 /\[ERROR\] InnoDB: Table test/t1 in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=1 SYS_TABLES\.MIX_LEN=511\b.*/ in mysqld.1.err FOUND 1 /\[ERROR\] InnoDB: Table test/t1 in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=1 SYS_TABLES\.MIX_LEN=511\b.*/ in mysqld.1.err
# restart # restart
ib_buffer_pool
ib_logfile0 ib_logfile0
ibdata1 ibdata1
db.opt db.opt
...@@ -4,7 +4,7 @@ SET GLOBAL INNODB_IMMEDIATE_SCRUB_DATA_UNCOMPRESSED=1; ...@@ -4,7 +4,7 @@ SET GLOBAL INNODB_IMMEDIATE_SCRUB_DATA_UNCOMPRESSED=1;
SET GLOBAL INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG=2; SET GLOBAL INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG=2;
CREATE TABLE t1(f1 INT AUTO_INCREMENT PRIMARY KEY, CREATE TABLE t1(f1 INT AUTO_INCREMENT PRIMARY KEY,
f2 VARCHAR(256) GENERATED ALWAYS as('repairman'), f2 VARCHAR(256) GENERATED ALWAYS as('repairman'),
INDEX idx(f2))ENGINE= InnoDB; INDEX idx(f2))ENGINE= InnoDB STATS_PERSISTENT=0;
INSERT INTO t1(f1) SELECT seq FROM seq_1_to_50; INSERT INTO t1(f1) SELECT seq FROM seq_1_to_50;
FLUSH TABLE t1 FOR EXPORT; FLUSH TABLE t1 FOR EXPORT;
FOUND 108 /repairman/ in t1.ibd FOUND 108 /repairman/ in t1.ibd
......
...@@ -100,13 +100,9 @@ ERROR 42S02: Table 'test.tc' doesn't exist in engine ...@@ -100,13 +100,9 @@ ERROR 42S02: Table 'test.tc' doesn't exist in engine
SELECT * FROM tc; SELECT * FROM tc;
ERROR 42S02: Table 'test.tc' doesn't exist in engine ERROR 42S02: Table 'test.tc' doesn't exist in engine
SHOW CREATE TABLE td; SHOW CREATE TABLE td;
Table Create Table ERROR HY000: Got error 194 "Tablespace is missing for a table" from storage engine InnoDB
td CREATE TABLE `td` (
`a` int(11) NOT NULL,
PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=DYNAMIC
SELECT * FROM td; SELECT * FROM td;
a ERROR HY000: Got error 194 "Tablespace is missing for a table" from storage engine InnoDB
SHOW CREATE TABLE tz; SHOW CREATE TABLE tz;
Table Create Table Table Create Table
tz CREATE TABLE `tz` ( tz CREATE TABLE `tz` (
...@@ -121,8 +117,8 @@ a ...@@ -121,8 +117,8 @@ a
42 42
SHOW CREATE TABLE tp; SHOW CREATE TABLE tp;
ERROR 42S02: Table 'test.tp' doesn't exist in engine ERROR 42S02: Table 'test.tp' doesn't exist in engine
FOUND 5 /InnoDB: Table test/t[cp] in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=(129|289|3873|1232[13]) SYS_TABLES\.N_COLS=2147483649/ in mysqld.1.err FOUND 3 /InnoDB: Table test/t[cp] in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=(129|289|3873|1232[13]) SYS_TABLES\.N_COLS=2147483649/ in mysqld.1.err
FOUND 2 /InnoDB: Table test/tr in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=65 SYS_TABLES\.MIX_LEN=4294967295\b/ in mysqld.1.err FOUND 1 /InnoDB: Table test/tr in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=65 SYS_TABLES\.MIX_LEN=4294967295\b/ in mysqld.1.err
Restoring SYS_TABLES clustered index root page (8) Restoring SYS_TABLES clustered index root page (8)
# restart: with restart_parameters # restart: with restart_parameters
SHOW CREATE TABLE tr; SHOW CREATE TABLE tr;
......
FLUSH TABLES; FLUSH TABLES;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB STATS_PERSISTENT=0;
INSERT INTO t1 VALUES (1),(2); INSERT INTO t1 VALUES (1),(2);
connect wait,localhost,root,,test; connect wait,localhost,root,,test;
SET DEBUG_SYNC='before_trx_state_committed_in_memory SIGNAL c WAIT_FOR ever'; SET DEBUG_SYNC='before_trx_state_committed_in_memory SIGNAL c WAIT_FOR ever';
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Bug #20445525 ADD A CONSISTENCY CHECK AGAINST DB_TRX_ID BEING # Bug #20445525 ADD A CONSISTENCY CHECK AGAINST DB_TRX_ID BEING
# IN THE FUTURE # IN THE FUTURE
# #
CREATE TABLE t1(a INT) row_format=redundant engine=innoDB; CREATE TABLE t1(a INT) row_format=redundant engine=innoDB stats_persistent=0;
INSERT INTO t1 VALUES(1); INSERT INTO t1 VALUES(1);
InnoDB 0 transactions not purged InnoDB 0 transactions not purged
call mtr.add_suppression("\\[Warning\\] InnoDB: A transaction id in a record of table `test`\\.`t1` is newer than the system-wide maximum"); call mtr.add_suppression("\\[Warning\\] InnoDB: A transaction id in a record of table `test`\\.`t1` is newer than the system-wide maximum");
......
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
SET innodb_strict_mode=OFF; SET innodb_strict_mode=OFF;
CREATE TABLE test_tab ( CREATE TABLE test_tab (
a_str_18 mediumtext, a_str_18 mediumtext,
...@@ -154,3 +156,4 @@ ROLLBACK; ...@@ -154,3 +156,4 @@ ROLLBACK;
InnoDB 0 transactions not purged InnoDB 0 transactions not purged
DROP TABLE t1; DROP TABLE t1;
DROP TABLE t2; DROP TABLE t2;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
...@@ -25,6 +25,7 @@ call mtr.add_suppression("Table .*bug16720368.* is corrupted"); ...@@ -25,6 +25,7 @@ call mtr.add_suppression("Table .*bug16720368.* is corrupted");
-- echo # Bug#16720368 INNODB CRASHES ON BROKEN #SQL*.IBD FILE AT STARTUP -- echo # Bug#16720368 INNODB CRASHES ON BROKEN #SQL*.IBD FILE AT STARTUP
-- echo # -- echo #
SET GLOBAL innodb_stats_persistent=0;
CREATE TABLE bug16720368_1 (a INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE bug16720368_1 (a INT PRIMARY KEY) ENGINE=InnoDB;
......
--source include/innodb_page_size.inc --source include/innodb_page_size.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
let INNODB_PAGE_SIZE=`select @@innodb_page_size`; let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
let MYSQLD_DATADIR=`select @@datadir`; let MYSQLD_DATADIR=`select @@datadir`;
...@@ -76,3 +79,5 @@ EOF ...@@ -76,3 +79,5 @@ EOF
UNLOCK TABLES; UNLOCK TABLES;
SELECT * FROM t1; SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
--source include/count_sessions.inc --source include/count_sessions.inc
--source include/default_charset.inc --source include/default_charset.inc
SET GLOBAL innodb_stats_persistent = 0;
--echo # --echo #
--echo # Bug #19027905 ASSERT RET.SECOND DICT_CREATE_FOREIGN_CONSTRAINTS_LOW --echo # Bug #19027905 ASSERT RET.SECOND DICT_CREATE_FOREIGN_CONSTRAINTS_LOW
--echo # DICT_CREATE_FOREIGN_CONSTR --echo # DICT_CREATE_FOREIGN_CONSTR
...@@ -126,6 +128,9 @@ FLUSH TABLES; ...@@ -126,6 +128,9 @@ FLUSH TABLES;
--let $shutdown_timeout= --let $shutdown_timeout=
disconnect incomplete; disconnect incomplete;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
INSERT INTO child SET a=0; INSERT INTO child SET a=0;
--error ER_NO_REFERENCED_ROW_2 --error ER_NO_REFERENCED_ROW_2
INSERT INTO child SET a=1; INSERT INTO child SET a=1;
...@@ -1132,4 +1137,6 @@ DROP TABLE binaries, collections; ...@@ -1132,4 +1137,6 @@ DROP TABLE binaries, collections;
--echo # End of 10.6 tests --echo # End of 10.6 tests
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
--source include/wait_until_count_sessions.inc --source include/wait_until_count_sessions.inc
...@@ -2,6 +2,9 @@ ...@@ -2,6 +2,9 @@
# This test is slow on buildbot. # This test is slow on buildbot.
--source include/big_test.inc --source include/big_test.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
FLUSH TABLES; FLUSH TABLES;
let $MYSQLD_TMPDIR = `SELECT @@tmpdir`; let $MYSQLD_TMPDIR = `SELECT @@tmpdir`;
...@@ -222,3 +225,4 @@ SELECT * FROM t1; ...@@ -222,3 +225,4 @@ SELECT * FROM t1;
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL innodb_compression_algorithm=@save_algo; SET GLOBAL innodb_compression_algorithm=@save_algo;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
...@@ -13,6 +13,9 @@ ...@@ -13,6 +13,9 @@
--source include/have_innodb_16k.inc --source include/have_innodb_16k.inc
--source include/have_partition.inc --source include/have_partition.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
# Check index merge threshold by create index on all datatypes # Check index merge threshold by create index on all datatypes
CREATE TABLE tab(a BIGINT PRIMARY KEY,c1 TINYTEXT,c2 TEXT,c3 MEDIUMTEXT, CREATE TABLE tab(a BIGINT PRIMARY KEY,c1 TINYTEXT,c2 TEXT,c3 MEDIUMTEXT,
...@@ -186,3 +189,5 @@ CREATE INDEX index1 ON tab1(b(750)) COMMENT 'MERGE_THRESHOLD=45'; ...@@ -186,3 +189,5 @@ CREATE INDEX index1 ON tab1(b(750)) COMMENT 'MERGE_THRESHOLD=45';
--source suite/innodb/include/innodb_merge_threshold_secondary.inc --source suite/innodb/include/innodb_merge_threshold_secondary.inc
DROP TABLE tab1; DROP TABLE tab1;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/have_innodb_16k.inc --source include/have_innodb_16k.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
call mtr.add_suppression("InnoDB: Cannot add field .* in table"); call mtr.add_suppression("InnoDB: Cannot add field .* in table");
let $MYSQLD_DATADIR= `select @@datadir`; let $MYSQLD_DATADIR= `select @@datadir`;
...@@ -457,6 +460,7 @@ DROP TABLE t1; ...@@ -457,6 +460,7 @@ DROP TABLE t1;
--source include/wait_all_purged.inc --source include/wait_all_purged.inc
SET GLOBAL innodb_compression_level=@save_level; SET GLOBAL innodb_compression_level=@save_level;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge; DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge;
DROP TABLE tlong; DROP TABLE tlong;
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/have_innodb_32k.inc --source include/have_innodb_32k.inc
SET GLOBAL innodb_stats_persistent = 0;
call mtr.add_suppression("Innodb: Cannot add field.*row size is"); call mtr.add_suppression("Innodb: Cannot add field.*row size is");
let $MYSQLD_DATADIR= `select @@datadir`; let $MYSQLD_DATADIR= `select @@datadir`;
......
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
--source include/no_valgrind_without_big.inc --source include/no_valgrind_without_big.inc
SET GLOBAL innodb_monitor_reset_all=all;
--disable_warnings
SET GLOBAL innodb_monitor_reset_all=default;
--enable_warnings
let $innodb_metrics_select= let $innodb_metrics_select=
SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl'; SELECT name, count FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE subsystem = 'ddl';
...@@ -154,6 +158,7 @@ let $ID= `SELECT @id := CONNECTION_ID()`; ...@@ -154,6 +158,7 @@ let $ID= `SELECT @id := CONNECTION_ID()`;
--error ER_QUERY_INTERRUPTED --error ER_QUERY_INTERRUPTED
KILL QUERY @id; KILL QUERY @id;
SET GLOBAL innodb_max_purge_lag_wait=0;
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2d_created WAIT_FOR kill_done'; SET DEBUG_SYNC = 'row_log_apply_before SIGNAL c2d_created WAIT_FOR kill_done';
--send --send
CREATE INDEX c2d ON t1(c2); CREATE INDEX c2d ON t1(c2);
...@@ -205,13 +210,13 @@ SHOW CREATE TABLE t1; ...@@ -205,13 +210,13 @@ SHOW CREATE TABLE t1;
connection default; connection default;
SET @merge_encrypt_0= SET @merge_encrypt_0=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
SET @merge_decrypt_0= SET @merge_decrypt_0=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
SET @rowlog_encrypt_0= SET @rowlog_encrypt_0=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
connection con1; connection con1;
...@@ -250,13 +255,13 @@ INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_FIELDS sf ...@@ -250,13 +255,13 @@ INNER JOIN INFORMATION_SCHEMA.INNODB_SYS_FIELDS sf
ON si.index_id = sf.index_id WHERE si.name = '?c2e'; ON si.index_id = sf.index_id WHERE si.name = '?c2e';
SET @merge_encrypt_1= SET @merge_encrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
SET @merge_decrypt_1= SET @merge_decrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
SET @rowlog_encrypt_1= SET @rowlog_encrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
SELECT SELECT
...@@ -293,16 +298,16 @@ ALTER TABLE t1 COMMENT 'testing if c2e will be dropped'; ...@@ -293,16 +298,16 @@ ALTER TABLE t1 COMMENT 'testing if c2e will be dropped';
eval $innodb_metrics_select; eval $innodb_metrics_select;
SET @merge_encrypt_1= SET @merge_encrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
SET @merge_decrypt_1= SET @merge_decrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
SET @rowlog_encrypt_1= SET @rowlog_encrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
SET @rowlog_decrypt_1= SET @rowlog_decrypt_1=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted');
connection con1; connection con1;
...@@ -339,16 +344,16 @@ eval $innodb_metrics_select; ...@@ -339,16 +344,16 @@ eval $innodb_metrics_select;
connection default; connection default;
SET @merge_encrypt_2= SET @merge_encrypt_2=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_encrypted');
SET @merge_decrypt_2= SET @merge_decrypt_2=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_merge_blocks_decrypted');
SET @rowlog_encrypt_2= SET @rowlog_encrypt_2=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_encrypted');
SET @rowlog_decrypt_2= SET @rowlog_decrypt_2=
(SELECT variable_value FROM information_schema.global_status (SELECT CAST(variable_value AS INTEGER) FROM information_schema.global_status
WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted'); WHERE variable_name = 'innodb_encryption_n_rowlog_blocks_decrypted');
SELECT SELECT
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
--source include/innodb_page_size_small.inc --source include/innodb_page_size_small.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
LET $MYSQLD_DATADIR = `select @@datadir`; LET $MYSQLD_DATADIR = `select @@datadir`;
LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`; LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;
...@@ -144,3 +147,5 @@ DROP TABLE parent; ...@@ -144,3 +147,5 @@ DROP TABLE parent;
--echo # temporary tablespace information --echo # temporary tablespace information
--echo # --echo #
SELECT SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE name like 'innodb_temporary'; SELECT SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE name like 'innodb_temporary';
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
let $MYSQLD_DATADIR=`select @@datadir`; let $MYSQLD_DATADIR=`select @@datadir`;
CREATE TABLE t1(f1 int auto_increment primary key, CREATE TABLE t1(f1 int auto_increment primary key,
f2 varchar(256), f2 varchar(256),
f3 text) engine = innodb; f3 text) engine = innodb stats_persistent=0;
let $numinserts = 500; let $numinserts = 500;
--disable_query_log --disable_query_log
begin; begin;
......
...@@ -49,7 +49,7 @@ SELECT COUNT(*) FROM t2; ...@@ -49,7 +49,7 @@ SELECT COUNT(*) FROM t2;
connection con1; connection con1;
EXPLAIN SELECT * FROM t2 WHERE val=4; EXPLAIN SELECT * FROM t2 WHERE val=4;
--source include/wait_all_purged.inc SET GLOBAL innodb_max_purge_lag_wait=0;
--echo # After COMMIT and purge, the DELETE must show up. --echo # After COMMIT and purge, the DELETE must show up.
EXPLAIN SELECT * FROM t1 WHERE val=4; EXPLAIN SELECT * FROM t1 WHERE val=4;
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
let $datadir=`select @@datadir`; let $datadir=`select @@datadir`;
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
--echo # --echo #
--echo # MDEV-11369: Instant ADD COLUMN for InnoDB --echo # MDEV-11369: Instant ADD COLUMN for InnoDB
--echo # --echo #
...@@ -964,3 +967,4 @@ remove_file $datadir/test/mdev28822_100427_innodb.frm; ...@@ -964,3 +967,4 @@ remove_file $datadir/test/mdev28822_100427_innodb.frm;
copy_file std_data/mysql_upgrade/mdev28822_100427_innodb.frm $datadir/test/mdev28822_100427_innodb.frm; copy_file std_data/mysql_upgrade/mdev28822_100427_innodb.frm $datadir/test/mdev28822_100427_innodb.frm;
ALTER TABLE mdev28822_100427_innodb ADD i1 INTEGER, ALGORITHM=INSTANT; ALTER TABLE mdev28822_100427_innodb ADD i1 INTEGER, ALGORITHM=INSTANT;
DROP TABLE mdev28822_100427_innodb; DROP TABLE mdev28822_100427_innodb;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
--source include/have_innodb.inc --source include/have_innodb.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
--echo # --echo #
--echo # MDEV-17821 Assertion `!page_rec_is_supremum(rec)' failed --echo # MDEV-17821 Assertion `!page_rec_is_supremum(rec)' failed
--echo # in btr_pcur_store_position --echo # in btr_pcur_store_position
...@@ -527,3 +530,7 @@ ALTER TABLE t1 ADD COLUMN i INT GENERATED ALWAYS AS (1), DROP COLUMN i; ...@@ -527,3 +530,7 @@ ALTER TABLE t1 ADD COLUMN i INT GENERATED ALWAYS AS (1), DROP COLUMN i;
DROP TABLE t1; DROP TABLE t1;
--echo # End of 10.4 tests --echo # End of 10.4 tests
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
--echo # End of 10.6 tests
...@@ -14,7 +14,7 @@ let MYSQLD_DATADIR=`select @@datadir`; ...@@ -14,7 +14,7 @@ let MYSQLD_DATADIR=`select @@datadir`;
--echo # --echo #
CREATE TABLE t1(id INT PRIMARY KEY, c2 INT UNIQUE) CREATE TABLE t1(id INT PRIMARY KEY, c2 INT UNIQUE)
ENGINE=InnoDB ROW_FORMAT=REDUNDANT; ENGINE=InnoDB STATS_PERSISTENT=0 ROW_FORMAT=REDUNDANT;
CREATE TABLE t2 LIKE t1; CREATE TABLE t2 LIKE t1;
INSERT INTO t1 VALUES(0,2); INSERT INTO t1 VALUES(0,2);
INSERT INTO t2 VALUES(2,1); INSERT INTO t2 VALUES(2,1);
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
--source include/have_debug_sync.inc --source include/have_debug_sync.inc
--source include/have_sequence.inc --source include/have_sequence.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
SET @old_instant= SET @old_instant=
(SELECT variable_value FROM information_schema.global_status (SELECT variable_value FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column'); WHERE variable_name = 'innodb_instant_alter_column');
...@@ -602,3 +605,7 @@ SET DEBUG_SYNC=RESET; ...@@ -602,3 +605,7 @@ SET DEBUG_SYNC=RESET;
SELECT variable_value-@old_instant instants SELECT variable_value-@old_instant instants
FROM information_schema.global_status FROM information_schema.global_status
WHERE variable_name = 'innodb_instant_alter_column'; WHERE variable_name = 'innodb_instant_alter_column';
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
--echo # End of 10.6 tests
...@@ -14,7 +14,7 @@ connect (prevent_purge,localhost,root); ...@@ -14,7 +14,7 @@ connect (prevent_purge,localhost,root);
START TRANSACTION WITH CONSISTENT SNAPSHOT; START TRANSACTION WITH CONSISTENT SNAPSHOT;
connection default; connection default;
CREATE TABLE t1 (f1 INT, f2 INT) ENGINE=InnoDB; CREATE TABLE t1 (f1 INT, f2 INT) ENGINE=InnoDB STATS_PERSISTENT=0;
INSERT INTO t1 () VALUES (); INSERT INTO t1 () VALUES ();
ALTER TABLE t1 DROP f2, ADD COLUMN f2 INT; ALTER TABLE t1 DROP f2, ADD COLUMN f2 INT;
ALTER TABLE t1 DROP f1; ALTER TABLE t1 DROP f1;
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
# The embedded server tests do not support restarting. # The embedded server tests do not support restarting.
--source include/not_embedded.inc --source include/not_embedded.inc
SET GLOBAL innodb_stats_persistent = 0;
# Flush any open myisam tables from previous tests # Flush any open myisam tables from previous tests
FLUSH TABLES; FLUSH TABLES;
......
...@@ -170,6 +170,8 @@ call mtr.add_suppression("InnoDB: Plugin initialization aborted"); ...@@ -170,6 +170,8 @@ call mtr.add_suppression("InnoDB: Plugin initialization aborted");
call mtr.add_suppression("Plugin 'InnoDB' \(init function returned error\|registration as a STORAGE ENGINE failed\)"); call mtr.add_suppression("Plugin 'InnoDB' \(init function returned error\|registration as a STORAGE ENGINE failed\)");
call mtr.add_suppression("InnoDB: Table test/u[123] in the InnoDB data dictionary has tablespace id [1-9][0-9]*, but tablespace with that id or name does not exist\\. Have you deleted or moved \\.ibd files\\?"); call mtr.add_suppression("InnoDB: Table test/u[123] in the InnoDB data dictionary has tablespace id [1-9][0-9]*, but tablespace with that id or name does not exist\\. Have you deleted or moved \\.ibd files\\?");
call mtr.add_suppression("InnoDB: Cannot replay rename of tablespace.*"); call mtr.add_suppression("InnoDB: Cannot replay rename of tablespace.*");
call mtr.add_suppression("InnoDB: Attempted to open a previously opened tablespace");
call mtr.add_suppression("InnoDB: Recovery cannot access file");
FLUSH TABLES; FLUSH TABLES;
--enable_query_log --enable_query_log
......
--source include/have_debug.inc
--source include/linux.inc
--source include/not_embedded.inc
--source include/have_innodb.inc
--source include/have_sequence.inc
--echo #
--echo # MDEV-24670 avoid OOM by linux kernel co-operative memory management
--echo #
set @save_dbug=@@debug_dbug;
set @save_limit=@@GLOBAL.innodb_limit_optimistic_insert_debug;
# Wait for the undo logs to be empty from previous tests.
# This is not an actual parameter, so there is no need to restore it.
set GLOBAL innodb_max_purge_lag_wait=0;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
SET GLOBAL innodb_limit_optimistic_insert_debug=2;
SET STATEMENT unique_checks=0, foreign_key_checks=0 FOR
INSERT INTO t1 SELECT * FROM seq_1_to_1000;
SET GLOBAL innodb_limit_optimistic_insert_debug=@save_limit;
DROP TABLE t1;
SELECT CAST(VARIABLE_VALUE AS INTEGER) INTO @dirty_prev
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
set debug_dbug="d,trigger_garbage_collection";
SET GLOBAL innodb_buffer_pool_size=@@innodb_buffer_pool_size;
SELECT CAST(VARIABLE_VALUE AS INTEGER) < @dirty_prev AS LESS_DIRTY_IS_GOOD
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE VARIABLE_NAME='Innodb_buffer_pool_pages_dirty';
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
let SEARCH_PATTERN= InnoDB: Memory pressure event freed.*;
--source include/search_pattern_in_file.inc
set debug_dbug=@save_dbug;
--echo # End of 10.11 tests
...@@ -6,7 +6,7 @@ let MYSQLD_BASEDIR= `SELECT @@basedir`; ...@@ -6,7 +6,7 @@ let MYSQLD_BASEDIR= `SELECT @@basedir`;
let MYSQLD_DATADIR= `SELECT @@datadir`; let MYSQLD_DATADIR= `SELECT @@datadir`;
let INNODB_PAGE_SIZE=`select @@innodb_page_size`; let INNODB_PAGE_SIZE=`select @@innodb_page_size`;
create table t1(f1 int not null)engine=innodb; create table t1(f1 int not null)engine=innodb stats_persistent=0;
insert into t1 values(1), (2), (3); insert into t1 values(1), (2), (3);
let $resultlog=$MYSQLTEST_VARDIR/tmp/result.log; let $resultlog=$MYSQLTEST_VARDIR/tmp/result.log;
......
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/have_innodb_16k.inc --source include/have_innodb_16k.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
--echo # Bug #12429576 - Test an assertion failure on purge. --echo # Bug #12429576 - Test an assertion failure on purge.
CREATE TABLE t1_purge ( CREATE TABLE t1_purge (
A int, A int,
...@@ -110,4 +113,6 @@ SHOW CREATE TABLE t12963823; ...@@ -110,4 +113,6 @@ SHOW CREATE TABLE t12963823;
# We need to activate the purge thread before DROP TABLE. # We need to activate the purge thread before DROP TABLE.
-- source include/wait_all_purged.inc -- source include/wait_all_purged.inc
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge, t12637786, t12963823; DROP TABLE t1_purge, t2_purge, t3_purge, t4_purge, t12637786, t12963823;
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/have_sequence.inc --source include/have_sequence.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
--disable_query_log --disable_query_log
call mtr.add_suppression("InnoDB: Difficult to find free blocks in the buffer pool"); call mtr.add_suppression("InnoDB: Difficult to find free blocks in the buffer pool");
--enable_query_log --enable_query_log
...@@ -170,3 +173,7 @@ UNLOCK TABLES; ...@@ -170,3 +173,7 @@ UNLOCK TABLES;
DROP TABLE t1; DROP TABLE t1;
--echo # End of 10.3 tests --echo # End of 10.3 tests
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
--echo # End of 10.6 tests
...@@ -39,6 +39,8 @@ SELECT * FROM t; ...@@ -39,6 +39,8 @@ SELECT * FROM t;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM t; SELECT * FROM t;
SET GLOBAL innodb_max_purge_lag_wait=0; SET GLOBAL innodb_max_purge_lag_wait=0;
INSERT INTO mysql.innodb_index_stats
SELECT * FROM mysql.innodb_index_stats LIMIT 0;
--let $restart_parameters= --let $restart_parameters=
--source include/restart_mysqld.inc --source include/restart_mysqld.inc
SELECT * FROM t; SELECT * FROM t;
......
--innodb-checksum-algorithm=crc32 --innodb-checksum-algorithm=crc32
--innodb-undo-tablespaces=0 --innodb-undo-tablespaces=0
--skip-innodb-fast-shutdown
--skip-innodb-buffer-pool-dump-at-shutdown
...@@ -10,7 +10,7 @@ SET GLOBAL INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG=2; ...@@ -10,7 +10,7 @@ SET GLOBAL INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG=2;
let $MYSQLD_DATADIR=`select @@datadir`; let $MYSQLD_DATADIR=`select @@datadir`;
CREATE TABLE t1(f1 INT AUTO_INCREMENT PRIMARY KEY, CREATE TABLE t1(f1 INT AUTO_INCREMENT PRIMARY KEY,
f2 VARCHAR(256) GENERATED ALWAYS as('repairman'), f2 VARCHAR(256) GENERATED ALWAYS as('repairman'),
INDEX idx(f2))ENGINE= InnoDB; INDEX idx(f2))ENGINE= InnoDB STATS_PERSISTENT=0;
INSERT INTO t1(f1) SELECT seq FROM seq_1_to_50; INSERT INTO t1(f1) SELECT seq FROM seq_1_to_50;
FLUSH TABLE t1 FOR EXPORT; FLUSH TABLE t1 FOR EXPORT;
let SEARCH_PATTERN= repairman; let SEARCH_PATTERN= repairman;
......
--innodb-checksum-algorithm=crc32 --innodb-checksum-algorithm=crc32
--innodb-undo-tablespaces=0 --innodb-undo-tablespaces=0
--skip-innodb-buffer-pool-dump-at-shutdown
...@@ -156,7 +156,9 @@ SHOW CREATE TABLE tr; ...@@ -156,7 +156,9 @@ SHOW CREATE TABLE tr;
SHOW CREATE TABLE tc; SHOW CREATE TABLE tc;
--error ER_NO_SUCH_TABLE_IN_ENGINE --error ER_NO_SUCH_TABLE_IN_ENGINE
SELECT * FROM tc; SELECT * FROM tc;
--error ER_GET_ERRNO
SHOW CREATE TABLE td; SHOW CREATE TABLE td;
--error ER_GET_ERRNO
SELECT * FROM td; SELECT * FROM td;
# This table was converted to NO_ROLLBACK due to the SYS_TABLES.TYPE change. # This table was converted to NO_ROLLBACK due to the SYS_TABLES.TYPE change.
SHOW CREATE TABLE tz; SHOW CREATE TABLE tz;
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
--source include/not_embedded.inc --source include/not_embedded.inc
FLUSH TABLES; FLUSH TABLES;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB STATS_PERSISTENT=0;
INSERT INTO t1 VALUES (1),(2); INSERT INTO t1 VALUES (1),(2);
connect (wait,localhost,root,,test); connect (wait,localhost,root,,test);
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
let PAGE_SIZE=`select @@innodb_page_size`; let PAGE_SIZE=`select @@innodb_page_size`;
CREATE TABLE t1(a INT) row_format=redundant engine=innoDB; CREATE TABLE t1(a INT) row_format=redundant engine=innoDB stats_persistent=0;
INSERT INTO t1 VALUES(1); INSERT INTO t1 VALUES(1);
let MYSQLD_DATADIR=`select @@datadir`; let MYSQLD_DATADIR=`select @@datadir`;
......
--source include/have_innodb.inc --source include/have_innodb.inc
SET @save_stats_persistent = @@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = 0;
SET innodb_strict_mode=OFF; SET innodb_strict_mode=OFF;
CREATE TABLE test_tab ( CREATE TABLE test_tab (
a_str_18 mediumtext, a_str_18 mediumtext,
...@@ -151,3 +154,5 @@ ROLLBACK; ...@@ -151,3 +154,5 @@ ROLLBACK;
--source include/wait_all_purged.inc --source include/wait_all_purged.inc
DROP TABLE t1; DROP TABLE t1;
DROP TABLE t2; DROP TABLE t2;
SET GLOBAL innodb_stats_persistent = @save_stats_persistent;
--innodb_undo_tablespaces=3 --innodb_undo_tablespaces=3
--innodb_sys_tablespaces --innodb_sys_tablespaces
--innodb-stats-persistent=0
...@@ -33,7 +33,7 @@ connection default; ...@@ -33,7 +33,7 @@ connection default;
disconnect ddl1; disconnect ddl1;
disconnect ddl2; disconnect ddl2;
disconnect ddl3; disconnect ddl3;
InnoDB 0 transactions not purged SET GLOBAL innodb_max_purge_lag_wait=0;
CHECK TABLE t1,t2,t3; CHECK TABLE t1,t2,t3;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t1 check status OK test.t1 check status OK
......
...@@ -113,7 +113,7 @@ disconnect ddl3; ...@@ -113,7 +113,7 @@ disconnect ddl3;
# Wait for purge, so that any #sql-ib.ibd files from the previous kill # Wait for purge, so that any #sql-ib.ibd files from the previous kill
# will be deleted. # will be deleted.
source ../../innodb/include/wait_all_purged.inc; SET GLOBAL innodb_max_purge_lag_wait=0;
CHECK TABLE t1,t2,t3; CHECK TABLE t1,t2,t3;
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
......
CREATE TABLE t1 (g MULTIPOINT NOT NULL) ENGINE=InnoDB; CREATE TABLE t1 (g MULTIPOINT NOT NULL) ENGINE=InnoDB STATS_PERSISTENT=0;
INSERT INTO t1 VALUES (''); INSERT INTO t1 VALUES ('');
connect purge_control,localhost,root; connect purge_control,localhost,root;
START TRANSACTION WITH CONSISTENT SNAPSHOT; START TRANSACTION WITH CONSISTENT SNAPSHOT;
......
create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb ROW_FORMAT=COMPRESSED; create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb ROW_FORMAT=COMPRESSED STATS_PERSISTENT=0;
lock tables t1 write;
start transaction;
insert into t1 values(1, Point(1,1)); insert into t1 values(1, Point(1,1));
insert into t1 values(2, Point(2,2)); insert into t1 values(2, Point(2,2));
insert into t1 values(3, Point(3,3)); insert into t1 values(3, Point(3,3));
...@@ -18,6 +20,8 @@ insert into t1 select * from t1; ...@@ -18,6 +20,8 @@ insert into t1 select * from t1;
insert into t1 select * from t1; insert into t1 select * from t1;
insert into t1 select * from t1; insert into t1 select * from t1;
insert into t1 select * from t1; insert into t1 select * from t1;
commit;
unlock tables;
start transaction; start transaction;
insert into t1 select * from t1; insert into t1 select * from t1;
select count(*) from t1; select count(*) from t1;
......
create table t ( create table t (
b point not null,d point not null, spatial key (d),spatial key (b) b point not null,d point not null, spatial key (d),spatial key (b)
) engine=innodb; ) engine=innodb stats_persistent=0;
InnoDB 0 transactions not purged InnoDB 0 transactions not purged
drop table t; drop table t;
This source diff could not be displayed because it is too large. You can view the blob instead.
--source include/have_innodb.inc --source include/have_innodb.inc
CREATE TABLE t1 (g MULTIPOINT NOT NULL) ENGINE=InnoDB; CREATE TABLE t1 (g MULTIPOINT NOT NULL) ENGINE=InnoDB STATS_PERSISTENT=0;
INSERT INTO t1 VALUES (''); INSERT INTO t1 VALUES ('');
connect purge_control,localhost,root; connect purge_control,localhost,root;
......
...@@ -10,9 +10,11 @@ ...@@ -10,9 +10,11 @@
# Valgrind takes too much time on PB2 even in the --big-test runs. # Valgrind takes too much time on PB2 even in the --big-test runs.
--source include/not_valgrind.inc --source include/not_valgrind.inc
create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb ROW_FORMAT=COMPRESSED; create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb ROW_FORMAT=COMPRESSED STATS_PERSISTENT=0;
# Insert enough values to let R-tree split. # Insert enough values to let R-tree split.
lock tables t1 write;
start transaction;
insert into t1 values(1, Point(1,1)); insert into t1 values(1, Point(1,1));
insert into t1 values(2, Point(2,2)); insert into t1 values(2, Point(2,2));
insert into t1 values(3, Point(3,3)); insert into t1 values(3, Point(3,3));
...@@ -33,6 +35,8 @@ insert into t1 select * from t1; ...@@ -33,6 +35,8 @@ insert into t1 select * from t1;
insert into t1 select * from t1; insert into t1 select * from t1;
insert into t1 select * from t1; insert into t1 select * from t1;
insert into t1 select * from t1; insert into t1 select * from t1;
commit;
unlock tables;
start transaction; start transaction;
insert into t1 select * from t1; insert into t1 select * from t1;
select count(*) from t1; select count(*) from t1;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
create table t ( create table t (
b point not null,d point not null, spatial key (d),spatial key (b) b point not null,d point not null, spatial key (d),spatial key (b)
) engine=innodb; ) engine=innodb stats_persistent=0;
--disable_query_log --disable_query_log
set @p=point(1,1); set @p=point(1,1);
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment