mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
MDEV-33616: Make two tests independent of lower_case_table_names
macOS puts the data directory on a case insensitive file system, so lower_case_table_names is 2 and both tests recorded an answer that only holds for 0. period.i_s_notembedded looked up I_S.PERIODS and I_S.KEY_PERIOD_USAGE by the schema name TEST. That comparison follows the table name comparison, so it finds the table under 1 and 2 and finds nothing under 0. Those four queries move to the new test period.i_s_case_sensitive, which requires lower_case_table_names=0. The win rdiff of period.i_s_notembedded covered the same difference and is no longer needed. atomic.drop_db_long_names generated table and view names in upper case and compared the DROP statements that DDL recovery writes to the binary log. Under 2 the names come back from the directory in lower case. Generating them in lower case to begin with gives the same names on every setting. Lower case also changes where the view name sorts against its table name for the letters after v, which moves one view between two of the recorded DROP VIEW statements.
This commit is contained in:
committed by
Dave Gosselin
parent
9b42c94b61
commit
c43a8f06a1
@@ -1,11 +1,11 @@
|
||||
RESET MASTER;
|
||||
"engine: aria crash point: ddl_log_drop_after_drop_tables position: 1"
|
||||
master-bin.000002 # Query # # use `test2`; DROP TABLE IF EXISTS `tABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB`,`tACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC`,`tADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD`,`tAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE`,`tAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF`,`tAGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG`,`tAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH`,`tAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII`,`tAJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ`,`tAKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK`,`tALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP VIEW IF EXISTS `tABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv`,`tACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCv`,`tADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDv`,`tAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEv`,`tAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFv`,`tAGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGv`,`tAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHv`,`tAIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIv`,`tAJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJv`,`tAKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKv` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP TABLE IF EXISTS `tAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM`,`tANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN`,`tAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO`,`tAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP`,`tAQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ`,`tARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR`,`tASSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS`,`tATTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT`,`tAUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU`,`tAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV`,`tAWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP VIEW IF EXISTS `tALLLLLLLLLLLLLLLLLLLLLLLLLLLLLLv`,`tAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMv`,`tANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNv`,`tAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOv`,`tAPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPv`,`tAQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQv`,`tARRRRRRRRRRRRRRRRRRRRRRRRRRRRRRv`,`tASSSSSSSSSSSSSSSSSSSSSSSSSSSSSSv`,`tATTTTTTTTTTTTTTTTTTTTTTTTTTTTTTv`,`tAUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUv`,`tAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVv` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP TABLE IF EXISTS `tAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,`tAYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY`,`tAZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ`,`tBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA`,`tBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB`,`tBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC`,`tBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD`,`tBEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP VIEW IF EXISTS `tAWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWv`,`tAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXv`,`tAYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYv`,`tAZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZv`,`tBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv`,`tBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBv`,`tBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCv`,`tBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDv`,`tBEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEv` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP TABLE IF EXISTS `tabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`,`tacccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`,`tadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`,`taeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee`,`taffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff`,`tagggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg`,`tahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh`,`taiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii`,`tajjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj`,`takkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk`,`tallllllllllllllllllllllllllllllllllllllllllllllllllllllllllll` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP VIEW IF EXISTS `tabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv`,`taccccccccccccccccccccccccccccccv`,`taddddddddddddddddddddddddddddddv`,`taeeeeeeeeeeeeeeeeeeeeeeeeeeeeeev`,`taffffffffffffffffffffffffffffffv`,`taggggggggggggggggggggggggggggggv`,`tahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhv`,`taiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiv`,`tajjjjjjjjjjjjjjjjjjjjjjjjjjjjjjv`,`takkkkkkkkkkkkkkkkkkkkkkkkkkkkkkv` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP TABLE IF EXISTS `tammmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm`,`tannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn`,`taoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo`,`tapppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp`,`taqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq`,`tarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr`,`tassssssssssssssssssssssssssssssssssssssssssssssssssssssssssss`,`tatttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt`,`tauuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu`,`tavvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv`,`tawwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP VIEW IF EXISTS `tallllllllllllllllllllllllllllllv`,`tammmmmmmmmmmmmmmmmmmmmmmmmmmmmmv`,`tannnnnnnnnnnnnnnnnnnnnnnnnnnnnnv`,`taoooooooooooooooooooooooooooooov`,`tappppppppppppppppppppppppppppppv`,`taqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqv`,`tarrrrrrrrrrrrrrrrrrrrrrrrrrrrrrv`,`tassssssssssssssssssssssssssssssv`,`tattttttttttttttttttttttttttttttv`,`tauuuuuuuuuuuuuuuuuuuuuuuuuuuuuuv`,`tavvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv`,`tawwwwwwwwwwwwwwwwwwwwwwwwwwwwwwv` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP TABLE IF EXISTS `taxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`,`tayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy`,`tazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz`,`tbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`,`tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`,`tbcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc`,`tbdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd`,`tbeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee` /* generated by ddl recovery */
|
||||
master-bin.000002 # Query # # use `test2`; DROP VIEW IF EXISTS `taxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxv`,`tayyyyyyyyyyyyyyyyyyyyyyyyyyyyyyv`,`tazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzv`,`tbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaav`,`tbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbv`,`tbccccccccccccccccccccccccccccccv`,`tbddddddddddddddddddddddddddddddv`,`tbeeeeeeeeeeeeeeeeeeeeeeeeeeeeeev` /* generated by ddl recovery */
|
||||
"engine: aria crash point: ddl_log_drop_before_binlog position: 1"
|
||||
master-bin.000002 # Query # # DROP DATABASE IF EXISTS `test2` /* generated by ddl recovery */
|
||||
Warnings:
|
||||
|
||||
@@ -58,8 +58,10 @@ while ($e < $engine_count)
|
||||
while ($t < $max_tables)
|
||||
{
|
||||
inc $t;
|
||||
let $name=`select concat("t",char(floor(65+$t/26)),repeat(char(65+mod($t,26)),60))`;
|
||||
let $view=`select concat("t",char(floor(65+$t/26)),repeat(char(65+mod($t,26)),30),'v')`;
|
||||
# Generate the names in lower case so that they are unchanged by a
|
||||
# lower_case_table_names setting of 1 or 2.
|
||||
let $name=`select concat("t",char(floor(ascii('a')+$t/26)),repeat(char(ascii('a')+mod($t,26)),60))`;
|
||||
let $view=`select concat("t",char(floor(ascii('a')+$t/26)),repeat(char(ascii('a')+mod($t,26)),30),'v')`;
|
||||
--eval create table $name (a int not null) $extra_option
|
||||
--eval create view $view as select * from $name
|
||||
}
|
||||
|
||||
14
mysql-test/suite/period/r/i_s_case_sensitive.result
Normal file
14
mysql-test/suite/period/r/i_s_case_sensitive.result
Normal file
@@ -0,0 +1,14 @@
|
||||
# MDEV-32503 Queries from KEY_PERIOD_USAGE don't obey case-sensitivity
|
||||
create table t (a int, b date, c date, period for app(b,c),
|
||||
unique idx(a, app without overlaps));
|
||||
set names latin1 collate latin1_general_cs;
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
table_name
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
table_name
|
||||
set names latin1 collate latin1_general_ci;
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
table_name
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
table_name
|
||||
drop table t;
|
||||
@@ -1,20 +0,0 @@
|
||||
--- suite/period/r/i_s_notembedded.result 2024-01-01 19:50:37.000000000 +0100
|
||||
+++ suite/period/r/i_s_notembedded,win.reject 2024-01-01 19:57:18.888306500 +0100
|
||||
@@ -69,13 +69,17 @@
|
||||
set names latin1 collate latin1_general_cs;
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
table_name
|
||||
+t
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
table_name
|
||||
+t
|
||||
set names latin1 collate latin1_general_ci;
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
table_name
|
||||
+t
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
table_name
|
||||
+t
|
||||
# [DUPLICATE] MDEV-32504 Search by I_S.KEY_PERIOD_USAGE.CONSTRAINT_NAME
|
||||
# does not work
|
||||
select constraint_name from information_schema.key_period_usage where table_name = 't';
|
||||
@@ -63,19 +63,8 @@ def test t2 SYSTEM_TIME vs ve
|
||||
def test t2 mytime s e
|
||||
connection default;
|
||||
drop tables t1, t2;
|
||||
# MDEV-32503 Queries from KEY_PERIOD_USAGE don't obey case-sensitivity
|
||||
create table t (a int, b date, c date, period for app(b,c),
|
||||
unique idx(a, app without overlaps));
|
||||
set names latin1 collate latin1_general_cs;
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
table_name
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
table_name
|
||||
set names latin1 collate latin1_general_ci;
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
table_name
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
table_name
|
||||
# [DUPLICATE] MDEV-32504 Search by I_S.KEY_PERIOD_USAGE.CONSTRAINT_NAME
|
||||
# does not work
|
||||
select constraint_name from information_schema.key_period_usage where table_name = 't';
|
||||
|
||||
22
mysql-test/suite/period/t/i_s_case_sensitive.test
Normal file
22
mysql-test/suite/period/t/i_s_case_sensitive.test
Normal file
@@ -0,0 +1,22 @@
|
||||
#
|
||||
# Looking up I_S.PERIODS and I_S.KEY_PERIOD_USAGE by schema name compares the
|
||||
# name the same way table names are compared, so the answer depends on
|
||||
# lower_case_table_names. These cases record the case sensitive answer.
|
||||
#
|
||||
--source include/have_lowercase0.inc
|
||||
|
||||
--echo # MDEV-32503 Queries from KEY_PERIOD_USAGE don't obey case-sensitivity
|
||||
|
||||
create table t (a int, b date, c date, period for app(b,c),
|
||||
unique idx(a, app without overlaps));
|
||||
|
||||
set names latin1 collate latin1_general_cs;
|
||||
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
set names latin1 collate latin1_general_ci;
|
||||
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
|
||||
drop table t;
|
||||
@@ -1,5 +1,4 @@
|
||||
--source include/not_embedded.inc
|
||||
--source include/platform.inc
|
||||
|
||||
select * from information_schema.periods;
|
||||
|
||||
@@ -56,21 +55,12 @@ select * from information_schema.periods where table_schema = 'test';
|
||||
--connection default
|
||||
drop tables t1, t2;
|
||||
|
||||
--echo # MDEV-32503 Queries from KEY_PERIOD_USAGE don't obey case-sensitivity
|
||||
# The case sensitive lookups of MDEV-32503 need lower_case_table_names=0 and
|
||||
# live in period.i_s_case_sensitive
|
||||
|
||||
create table t (a int, b date, c date, period for app(b,c),
|
||||
unique idx(a, app without overlaps));
|
||||
|
||||
|
||||
set names latin1 collate latin1_general_cs;
|
||||
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
set names latin1 collate latin1_general_ci;
|
||||
|
||||
select table_name from information_schema.periods where table_schema = 'TEST';
|
||||
select table_name from information_schema.key_period_usage where table_schema = 'TEST';
|
||||
|
||||
--echo # [DUPLICATE] MDEV-32504 Search by I_S.KEY_PERIOD_USAGE.CONSTRAINT_NAME
|
||||
--echo # does not work
|
||||
disable_warnings; # storage engine 'Innodb' is not found
|
||||
|
||||
Reference in New Issue
Block a user