Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions configure.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -590,6 +590,8 @@ CHECK_C_SOURCE_COMPILES("
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
/* macOS declares select() here and nowhere else that this test includes */
#include <sys/select.h>
#endif
int main()
{
Expand Down
39 changes: 39 additions & 0 deletions mysql-test/include/have_sparse_files.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Skip the test unless the vardir filesystem stores files with holes.
#
# A test that builds a large file by seeking past its end and writing a
# single byte relies on the skipped range staying unallocated. HFS on
# macOS allocates every block of that range, so the file consumes its full
# apparent size and the write fails with ENOSPC once the range exceeds the
# free space on the volume.
#
# The probe writes one byte 64MB past the start of an empty file and compares
# the allocated block count against that offset. A filesystem that leaves a
# hole allocates only the block holding the byte. The offset has to stay well
# above 16MB, since APFS fills the range of a file smaller than that rather
# than recording a hole.

--error 0,1
perl;
use strict;
use warnings;

my $probe= "$ENV{MYSQLTEST_VARDIR}/tmp/sparse_probe";

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd use the data dir here. tmp could be a different filesystem (ramdisk). Or I'd make the .inc file take a parameter.

my $offset= 64 * 1024 * 1024;
my $sparse= 0;

if (open(my $fh, '>', $probe))
{
binmode $fh;
if (seek($fh, $offset, 0) and print($fh chr(0)) and close($fh))
{
my $blocks= (stat $probe)[12];
$sparse= 1 if defined($blocks) and $blocks * 512 < $offset;
}
}
unlink $probe;
exit($sparse ? 0 : 1);
EOF
if ($errno)
{
--skip Requires a vardir filesystem that stores files with holes
}
4 changes: 4 additions & 0 deletions mysql-test/include/not_mac.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#
# suite.pm will make sure that all tests including this file
# will be skipped if run under macOS
#
1 change: 1 addition & 0 deletions mysql-test/main/lowercase_routines.opt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
--lower-case-table-names=2
46 changes: 46 additions & 0 deletions mysql-test/main/lowercase_routines.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#
# MDEV-33616 Routines of a mixed case database are not listed when
# lower_case_table_names is 2
#
CREATE DATABASE Db1;
USE Db1;
CREATE FUNCTION f1(a INT) RETURNS INT RETURN a;
CREATE PROCEDURE p1(b INT) BEGIN END;
SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='Db1';
SCHEMA_NAME
Db1
SELECT db, name FROM mysql.proc WHERE name IN ('f1','p1');
db name
db1 f1
db1 p1
SELECT ROUTINE_NAME FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA='Db1';
ROUTINE_NAME
f1
p1
SELECT SPECIFIC_NAME, ORDINAL_POSITION, PARAMETER_NAME
FROM information_schema.PARAMETERS WHERE SPECIFIC_SCHEMA='Db1';
SPECIFIC_NAME ORDINAL_POSITION PARAMETER_NAME
f1 0 NULL
f1 1 a
p1 1 b
SHOW FUNCTION STATUS WHERE Db='Db1';
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
db1 f1 FUNCTION root@localhost # # DEFINER latin1 latin1_swedish_ci latin1_swedish_ci
SHOW PROCEDURE STATUS WHERE Db='Db1';
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
db1 p1 PROCEDURE root@localhost # # DEFINER latin1 latin1_swedish_ci latin1_swedish_ci
SELECT ROUTINE_NAME FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA='Db1' ORDER BY ROUTINE_NAME;
ROUTINE_NAME
f1
p1
SELECT SPECIFIC_NAME, ORDINAL_POSITION, PARAMETER_NAME
FROM information_schema.PARAMETERS WHERE SPECIFIC_SCHEMA='Db1'
ORDER BY SPECIFIC_NAME, ORDINAL_POSITION;
SPECIFIC_NAME ORDINAL_POSITION PARAMETER_NAME
f1 0 NULL
f1 1 a
p1 1 b
USE test;
DROP DATABASE Db1;
47 changes: 47 additions & 0 deletions mysql-test/main/lowercase_routines.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#
# Tests that require lower_case_table_names to be 2
# (the default when the data directory is on a case insensitive file system)
#
--source include/have_lowercase2.inc

--echo #
--echo # MDEV-33616 Routines of a mixed case database are not listed when
--echo # lower_case_table_names is 2
--echo #

CREATE DATABASE Db1;
USE Db1;
CREATE FUNCTION f1(a INT) RETURNS INT RETURN a;
CREATE PROCEDURE p1(b INT) BEGIN END;

# The database keeps the case it was created with, mysql.proc does not.
SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='Db1';
--sorted_result
SELECT db, name FROM mysql.proc WHERE name IN ('f1','p1');

# The name from the WHERE clause becomes the key of an index read on
# mysql.proc. mysql.proc.db is utf8mb3_bin and holds the folded name, so
# an unfolded key finds nothing.
--sorted_result
SELECT ROUTINE_NAME FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA='Db1';
--sorted_result
SELECT SPECIFIC_NAME, ORDINAL_POSITION, PARAMETER_NAME
FROM information_schema.PARAMETERS WHERE SPECIFIC_SCHEMA='Db1';
--replace_column 5 # 6 #
SHOW FUNCTION STATUS WHERE Db='Db1';
--replace_column 5 # 6 #
SHOW PROCEDURE STATUS WHERE Db='Db1';

# ORDER BY keeps the condition from reaching the routine that fills the
# table, so mysql.proc is read in full and the WHERE is applied afterwards
# over a utf8mb3_general_ci column. That shape returned the rows even
# while the queries above returned none.
SELECT ROUTINE_NAME FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA='Db1' ORDER BY ROUTINE_NAME;
SELECT SPECIFIC_NAME, ORDINAL_POSITION, PARAMETER_NAME
FROM information_schema.PARAMETERS WHERE SPECIFIC_SCHEMA='Db1'
ORDER BY SPECIFIC_NAME, ORDINAL_POSITION;

USE test;
DROP DATABASE Db1;
46 changes: 46 additions & 0 deletions mysql-test/main/lowercase_routines0.result
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#
# MDEV-33616 A statement cannot reference two routines whose databases
# differ only in case
#
CREATE DATABASE Db1;
CREATE DATABASE db1;
CREATE FUNCTION Db1.f1() RETURNS INT RETURN 1;
CREATE FUNCTION db1.f1() RETURNS INT RETURN 2;
CREATE PROCEDURE test.p1() SELECT Db1.f1(), db1.f1();
SELECT Db1.f1();
Db1.f1()
1
SELECT db1.f1();
db1.f1()
2
connect con1,localhost,root,,test;
SELECT Db1.f1(), db1.f1();
Db1.f1() db1.f1()
1 2
disconnect con1;
connect con2,localhost,root,,test;
SELECT db1.f1(), Db1.f1();
db1.f1() Db1.f1()
2 1
disconnect con2;
connect con3,localhost,root,,test;
CALL test.p1();
Db1.f1() db1.f1()
1 2
disconnect con3;
connect con4,localhost,root,,test;
SELECT db1.f1();
db1.f1()
2
connection default;
DROP FUNCTION db1.f1;
CREATE FUNCTION db1.f1() RETURNS INT RETURN 99;
connection con4;
SELECT Db1.f1(), db1.f1();
Db1.f1() db1.f1()
1 99
disconnect con4;
connection default;
DROP PROCEDURE test.p1;
DROP DATABASE Db1;
DROP DATABASE db1;
65 changes: 65 additions & 0 deletions mysql-test/main/lowercase_routines0.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#
# Tests that require lower_case_table_names to be 0
# (the default when the data directory is on a case sensitive file system)
#
--source include/have_lowercase0.inc
--source include/have_case_sensitive_file_system.inc

--echo #
--echo # MDEV-33616 A statement cannot reference two routines whose databases
--echo # differ only in case
--echo #

CREATE DATABASE Db1;
CREATE DATABASE db1;
CREATE FUNCTION Db1.f1() RETURNS INT RETURN 1;
CREATE FUNCTION db1.f1() RETURNS INT RETURN 2;
CREATE PROCEDURE test.p1() SELECT Db1.f1(), db1.f1();

SELECT Db1.f1();
SELECT db1.f1();

# Every routine a statement names joins one set, keyed by the database and
# the routine name. The database name is case sensitive here, so the two
# routines have to stay apart and each reference has to reach its own. A
# connection that already holds one of them in its routine cache resolves
# both either way, so every check below starts from a connection that holds
# neither.
connect (con1,localhost,root,,test);
# A view compares its column names without regard to case, so under the
# view protocol the second column of a query like this one is given a
# generated name.
--disable_view_protocol
SELECT Db1.f1(), db1.f1();
--enable_view_protocol
disconnect con1;

connect (con2,localhost,root,,test);
--disable_view_protocol
SELECT db1.f1(), Db1.f1();
--enable_view_protocol
disconnect con2;

# A statement inside a routine body builds the same set.
connect (con3,localhost,root,,test);
CALL test.p1();
disconnect con3;

# A routine missing from the set is neither locked nor checked against the
# version of the routine cache, so it could execute a definition that
# another connection had already replaced.
connect (con4,localhost,root,,test);
SELECT db1.f1();
connection default;
DROP FUNCTION db1.f1;
CREATE FUNCTION db1.f1() RETURNS INT RETURN 99;
connection con4;
--disable_view_protocol
SELECT Db1.f1(), db1.f1();
--enable_view_protocol
disconnect con4;
connection default;

DROP PROCEDURE test.p1;
DROP DATABASE Db1;
DROP DATABASE db1;
1 change: 1 addition & 0 deletions mysql-test/suite.pm
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ sub skip_combinations {

$skip{'include/not_windows.inc'} = 'Requires not Windows' if IS_WINDOWS;
$skip{'include/not_aix.inc'} = 'Requires not AIX' if IS_AIX;
$skip{'include/not_mac.inc'} = 'Requires not macOS' if IS_MAC;
$skip{'include/not_ssl.inc'} = 'Skipped if --ssl' if $::opt_ssl;

$skip{'main/plugin_loaderr.test'} = 'needs compiled-in innodb'
Expand Down
12 changes: 6 additions & 6 deletions mysql-test/suite/atomic/drop_db_long_names.result
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
6 changes: 4 additions & 2 deletions mysql-test/suite/atomic/drop_db_long_names.test
Original file line number Diff line number Diff line change
Expand Up @@ -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(97+$t/26)),repeat(char(97+mod($t,26)),60))`;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd do ASCII('a') instead of 97.

let $view=`select concat("t",char(floor(97+$t/26)),repeat(char(97+mod($t,26)),30),'v')`;
--eval create table $name (a int not null) $extra_option
--eval create view $view as select * from $name
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ send SET GLOBAL innodb_buffer_pool_size=8388608;
connection default;
SET DEBUG_SYNC='now WAIT_FOR blocked';
# adjust for 32-bit and SUX_LOCK_GENERIC
--replace_regex /(5..)\/\1/505\/505/
--replace_regex /([45]..)\/\1/505\/505/

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this needs a review from the innodb folks

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are the exact numbers here? MDEV-26476 was never fixed on macOS, even though there apparently is a solution nowadays.

SHOW STATUS LIKE 'innodb_buffer_pool_resize_status';
SET DEBUG_SYNC='now SIGNAL go';
connection con1;
Expand Down
9 changes: 6 additions & 3 deletions mysql-test/suite/innodb/t/log_upgrade.test
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
--source include/have_innodb.inc
--source include/have_innodb_16k.inc
# Some operating systems or file systems do not support sparse files.
# For example, tmpfs on FreeBSD does not support them.
# On Microsoft Windows, sparse files have to be created in a special way.
--source include/big_test.inc
# include/shutdown_mysqld.inc does not work in ./mtr --embedded
--source include/not_embedded.inc
# Some operating systems or file systems do not support sparse files.
# For example, tmpfs on FreeBSD does not support them.
# On macOS, HFS allocates every block of the skipped range. APFS allocates
# the whole range for a file smaller than 16MB, and records a hole above that.
# On Microsoft Windows, sparse files have to be created in a special way.
--source include/have_sparse_files.inc

call mtr.add_suppression("InnoDB: The change buffer is corrupted");

Expand Down
1 change: 1 addition & 0 deletions mysql-test/suite/innodb/t/log_upgrade_101_flags.test
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
--source include/have_innodb.inc
--source include/big_test.inc
--source include/not_embedded.inc
--source include/have_sparse_files.inc
call mtr.add_suppression("InnoDB: The change buffer is corrupted");
call mtr.add_suppression("InnoDB: Tablespace size stored in header is 768 pages, but the sum of data file sizes is 384 pages");
call mtr.add_suppression("InnoDB: adjusting FSP_SPACE_FLAGS of file");
Expand Down
3 changes: 3 additions & 0 deletions mysql-test/suite/innodb_fts/t/index_table.test
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ CREATE TABLE articles (
content TEXT
) ENGINE= InnoDB;

# The error number is reported through my_strerror(), whose text for 11
# differs between systems, so normalize it
--replace_regex /".*" from/"Resource temporarily unavailable" from/
--error ER_GET_ERRNO
SET STATEMENT debug_dbug='+d,innodb_report_deadlock' FOR
CREATE FULLTEXT INDEX idx ON articles (title, content);
Expand Down
14 changes: 14 additions & 0 deletions mysql-test/suite/period/r/i_s_case_sensitive.result
Original file line number Diff line number Diff line change
@@ -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;
Loading
Loading