Merge branch 'bb-10.4-release' into bb-10.5-release

This commit is contained in:
Sergei Golubchik 2021-02-15 16:43:15 +01:00
commit 25d9d2e37f
316 changed files with 21851 additions and 3529 deletions

View File

@ -42,6 +42,11 @@
/* on merge conflict, bump to a higher version again */ /* on merge conflict, bump to a higher version again */
#define DUMP_VERSION "10.19" #define DUMP_VERSION "10.19"
/**
First mysql version supporting sequences.
*/
#define FIRST_SEQUENCE_VERSION 100300
#include <my_global.h> #include <my_global.h>
#include <my_sys.h> #include <my_sys.h>
#include <my_user.h> #include <my_user.h>
@ -93,6 +98,11 @@
/* Max length GTID position that we will output. */ /* Max length GTID position that we will output. */
#define MAX_GTID_LENGTH 1024 #define MAX_GTID_LENGTH 1024
/* Dump sequence/tables control */
#define DUMP_TABLE_ALL -1
#define DUMP_TABLE_TABLE 0
#define DUMP_TABLE_SEQUENCE 1
static my_bool ignore_table_data(const uchar *hash_key, size_t len); static my_bool ignore_table_data(const uchar *hash_key, size_t len);
static void add_load_option(DYNAMIC_STRING *str, const char *option, static void add_load_option(DYNAMIC_STRING *str, const char *option,
const char *option_value); const char *option_value);
@ -1079,6 +1089,22 @@ static int get_options(int *argc, char ***argv)
if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option))) if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option)))
return(ho_error); return(ho_error);
/*
Dumping under --system=stats with --replace or --inser-ignore is safe and will not
retult into race condition. Otherwise dump only structure and ignore data by default
while dumping.
*/
if (!(opt_system & OPT_SYSTEM_STATS) && !(opt_ignore || opt_replace_into))
{
if (my_hash_insert(&ignore_data,
(uchar*) my_strdup(PSI_NOT_INSTRUMENTED,
"mysql.innodb_index_stats", MYF(MY_WME))) ||
my_hash_insert(&ignore_data,
(uchar*) my_strdup(PSI_NOT_INSTRUMENTED,
"mysql.innodb_table_stats", MYF(MY_WME))))
return(EX_EOM);
}
if (opt_system & OPT_SYSTEM_ALL) if (opt_system & OPT_SYSTEM_ALL)
opt_system|= ~0; opt_system|= ~0;
@ -3931,14 +3957,6 @@ static void dump_table(const char *table, const char *db, const uchar *hash_key,
MYSQL_ROW row; MYSQL_ROW row;
DBUG_ENTER("dump_table"); DBUG_ENTER("dump_table");
/*
Check does table has a sequence structure and if has apply different sql queries
*/
if (check_if_ignore_table(table, table_type) & IGNORE_SEQUENCE_TABLE)
{
get_sequence_structure(table, db);
DBUG_VOID_RETURN;
}
/* /*
Make sure you get the create table info before the following check for Make sure you get the create table info before the following check for
--no-data flag below. Otherwise, the create table info won't be printed. --no-data flag below. Otherwise, the create table info won't be printed.
@ -4440,18 +4458,36 @@ err:
} /* dump_table */ } /* dump_table */
static char *getTableName(int reset) static char *getTableName(int reset, int want_sequences)
{ {
MYSQL_ROW row; MYSQL_ROW row;
if (!get_table_name_result) if (!get_table_name_result)
{ {
if (!(get_table_name_result= mysql_list_tables(mysql,NullS))) if (mysql_get_server_version(mysql) >= FIRST_SEQUENCE_VERSION)
return(NULL); {
const char *query= "SHOW FULL TABLES";
if (mysql_query_with_error_report(mysql, 0, query))
return (NULL);
if (!(get_table_name_result= mysql_store_result(mysql)))
return (NULL);
}
else
{
if (!(get_table_name_result= mysql_list_tables(mysql,NullS)))
return(NULL);
}
} }
if ((row= mysql_fetch_row(get_table_name_result))) if ((row= mysql_fetch_row(get_table_name_result)))
return((char*) row[0]); {
if (want_sequences != DUMP_TABLE_ALL)
while (row && MY_TEST(strcmp(row[1], "SEQUENCE")) == want_sequences)
row= mysql_fetch_row(get_table_name_result);
if (row)
return((char*) row[0]);
}
if (reset) if (reset)
mysql_data_seek(get_table_name_result,0); /* We want to read again */ mysql_data_seek(get_table_name_result,0); /* We want to read again */
else else
@ -4844,7 +4880,7 @@ static int dump_all_servers()
static int dump_all_stats() static int dump_all_stats()
{ {
my_bool prev_no_create_info; my_bool prev_no_create_info, prev_opt_replace_into;
if (mysql_select_db(mysql, "mysql")) if (mysql_select_db(mysql, "mysql"))
{ {
@ -4852,6 +4888,8 @@ static int dump_all_stats()
return 1; /* If --force */ return 1; /* If --force */
} }
fprintf(md_result_file,"\nUSE mysql;\n"); fprintf(md_result_file,"\nUSE mysql;\n");
prev_opt_replace_into= opt_replace_into;
opt_replace_into|= !opt_ignore;
prev_no_create_info= opt_no_create_info; prev_no_create_info= opt_no_create_info;
opt_no_create_info= 1; /* don't overwrite recreate tables */ opt_no_create_info= 1; /* don't overwrite recreate tables */
/* EITS added in 10.0.1 */ /* EITS added in 10.0.1 */
@ -4870,6 +4908,7 @@ static int dump_all_stats()
dump_table("innodb_table_stats", "mysql", NULL, 0); dump_table("innodb_table_stats", "mysql", NULL, 0);
} }
opt_no_create_info= prev_no_create_info; opt_no_create_info= prev_no_create_info;
opt_replace_into= prev_opt_replace_into;
return 0; return 0;
} }
@ -4880,12 +4919,14 @@ static int dump_all_stats()
static int dump_all_timezones() static int dump_all_timezones()
{ {
my_bool opt_prev_no_create_info; my_bool opt_prev_no_create_info, opt_prev_replace_into;
if (mysql_select_db(mysql, "mysql")) if (mysql_select_db(mysql, "mysql"))
{ {
DB_error(mysql, "when selecting the database"); DB_error(mysql, "when selecting the database");
return 1; /* If --force */ return 1; /* If --force */
} }
opt_prev_replace_into= opt_replace_into;
opt_replace_into|= !opt_ignore;
opt_prev_no_create_info= opt_no_create_info; opt_prev_no_create_info= opt_no_create_info;
opt_no_create_info= 1; opt_no_create_info= 1;
fprintf(md_result_file,"\nUSE mysql;\n"); fprintf(md_result_file,"\nUSE mysql;\n");
@ -4895,6 +4936,7 @@ static int dump_all_timezones()
dump_table("time_zone_transition", "mysql", NULL, 0); dump_table("time_zone_transition", "mysql", NULL, 0);
dump_table("time_zone_transition_type", "mysql", NULL, 0); dump_table("time_zone_transition_type", "mysql", NULL, 0);
opt_no_create_info= opt_prev_no_create_info; opt_no_create_info= opt_prev_no_create_info;
opt_replace_into= opt_prev_replace_into;
return 0; return 0;
} }
@ -5384,7 +5426,7 @@ static int dump_all_tables_in_db(char *database)
{ {
DYNAMIC_STRING query; DYNAMIC_STRING query;
init_dynamic_string_checked(&query, "LOCK TABLES ", 256, 1024); init_dynamic_string_checked(&query, "LOCK TABLES ", 256, 1024);
for (numrows= 0 ; (table= getTableName(1)) ; ) for (numrows= 0 ; (table= getTableName(1, DUMP_TABLE_ALL)) ; )
{ {
char *end= strmov(afterdot, table); char *end= strmov(afterdot, table);
if (include_table((uchar*) hash_key,end - hash_key)) if (include_table((uchar*) hash_key,end - hash_key))
@ -5418,7 +5460,19 @@ static int dump_all_tables_in_db(char *database)
DBUG_RETURN(1); DBUG_RETURN(1);
} }
} }
while ((table= getTableName(0)))
if (mysql_get_server_version(mysql) >= FIRST_SEQUENCE_VERSION &&
!opt_no_create_info)
{
// First process sequences
while ((table= getTableName(1, DUMP_TABLE_SEQUENCE)))
{
char *end= strmov(afterdot, table);
if (include_table((uchar*) hash_key, end - hash_key))
get_sequence_structure(table, database);
}
}
while ((table= getTableName(0, DUMP_TABLE_TABLE)))
{ {
char *end= strmov(afterdot, table); char *end= strmov(afterdot, table);
if (include_table((uchar*) hash_key, end - hash_key)) if (include_table((uchar*) hash_key, end - hash_key))
@ -5567,7 +5621,7 @@ static my_bool dump_all_views_in_db(char *database)
{ {
DYNAMIC_STRING query; DYNAMIC_STRING query;
init_dynamic_string_checked(&query, "LOCK TABLES ", 256, 1024); init_dynamic_string_checked(&query, "LOCK TABLES ", 256, 1024);
for (numrows= 0 ; (table= getTableName(1)); ) for (numrows= 0 ; (table= getTableName(1, DUMP_TABLE_TABLE)); )
{ {
char *end= strmov(afterdot, table); char *end= strmov(afterdot, table);
if (include_table((uchar*) hash_key,end - hash_key)) if (include_table((uchar*) hash_key,end - hash_key))
@ -5590,7 +5644,7 @@ static my_bool dump_all_views_in_db(char *database)
else else
verbose_msg("-- dump_all_views_in_db : logs flushed successfully!\n"); verbose_msg("-- dump_all_views_in_db : logs flushed successfully!\n");
} }
while ((table= getTableName(0))) while ((table= getTableName(0, DUMP_TABLE_TABLE)))
{ {
char *end= strmov(afterdot, table); char *end= strmov(afterdot, table);
if (include_table((uchar*) hash_key, end - hash_key)) if (include_table((uchar*) hash_key, end - hash_key))
@ -5720,7 +5774,7 @@ static int get_sys_var_lower_case_table_names()
static int dump_selected_tables(char *db, char **table_names, int tables) static int dump_selected_tables(char *db, char **table_names, int tables)
{ {
char table_buff[NAME_LEN*2+3]; char table_buff[NAME_LEN*2+3], table_type[NAME_LEN];
DYNAMIC_STRING lock_tables_query; DYNAMIC_STRING lock_tables_query;
char **dump_tables, **pos, **end; char **dump_tables, **pos, **end;
int lower_case_table_names; int lower_case_table_names;
@ -5817,9 +5871,22 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
DBUG_RETURN(1); DBUG_RETURN(1);
} }
} }
if (mysql_get_server_version(mysql) >= FIRST_SEQUENCE_VERSION)
{
/* Dump Sequence first */
for (pos= dump_tables; pos < end; pos++)
{
DBUG_PRINT("info",("Dumping sequence(?) %s", *pos));
if (check_if_ignore_table(*pos, table_type) & IGNORE_SEQUENCE_TABLE)
get_sequence_structure(*pos, db);
}
}
/* Dump each selected table */ /* Dump each selected table */
for (pos= dump_tables; pos < end; pos++) for (pos= dump_tables; pos < end; pos++)
{ {
if (check_if_ignore_table(*pos, table_type) & IGNORE_SEQUENCE_TABLE)
continue;
DBUG_PRINT("info",("Dumping table %s", *pos)); DBUG_PRINT("info",("Dumping table %s", *pos));
dump_table(*pos, db, NULL, 0); dump_table(*pos, db, NULL, 0);
if (opt_dump_triggers && if (opt_dump_triggers &&

View File

@ -60,6 +60,13 @@ then
sed "/Package: libmariadbd-dev/,/^$/d" -i debian/control sed "/Package: libmariadbd-dev/,/^$/d" -i debian/control
fi fi
## Skip TokuDB if arch is not amd64
if [[ ! $(dpkg-architecture -q DEB_BUILD_ARCH) =~ amd64 ]]
then
sed '/Package: mariadb-plugin-tokudb/,/^$/d' -i debian/control
fi
if [[ $(arch) =~ i[346]86 ]] if [[ $(arch) =~ i[346]86 ]]
then then
sed "/Package: mariadb-plugin-rocksdb/,/^$/d" -i debian/control sed "/Package: mariadb-plugin-rocksdb/,/^$/d" -i debian/control

View File

@ -90,6 +90,8 @@ extern struct wsrep_service_st {
bool (*wsrep_thd_set_wsrep_aborter_func)(MYSQL_THD bf_thd, MYSQL_THD thd); bool (*wsrep_thd_set_wsrep_aborter_func)(MYSQL_THD bf_thd, MYSQL_THD thd);
void (*wsrep_report_bf_lock_wait_func)(const MYSQL_THD thd, void (*wsrep_report_bf_lock_wait_func)(const MYSQL_THD thd,
unsigned long long trx_id); unsigned long long trx_id);
void (*wsrep_thd_kill_LOCK_func)(const MYSQL_THD thd);
void (*wsrep_thd_kill_UNLOCK_func)(const MYSQL_THD thd);
} *wsrep_service; } *wsrep_service;
#define MYSQL_SERVICE_WSREP_INCLUDED #define MYSQL_SERVICE_WSREP_INCLUDED
@ -107,6 +109,8 @@ extern struct wsrep_service_st {
#define wsrep_prepare_key_for_innodb(A,B,C,D,E,F,G) wsrep_service->wsrep_prepare_key_for_innodb_func(A,B,C,D,E,F,G) #define wsrep_prepare_key_for_innodb(A,B,C,D,E,F,G) wsrep_service->wsrep_prepare_key_for_innodb_func(A,B,C,D,E,F,G)
#define wsrep_thd_LOCK(T) wsrep_service->wsrep_thd_LOCK_func(T) #define wsrep_thd_LOCK(T) wsrep_service->wsrep_thd_LOCK_func(T)
#define wsrep_thd_UNLOCK(T) wsrep_service->wsrep_thd_UNLOCK_func(T) #define wsrep_thd_UNLOCK(T) wsrep_service->wsrep_thd_UNLOCK_func(T)
#define wsrep_thd_kill_LOCK(T) wsrep_service->wsrep_thd_kill_LOCK_func(T)
#define wsrep_thd_kill_UNLOCK(T) wsrep_service->wsrep_thd_kill_UNLOCK_func(T)
#define wsrep_thd_query(T) wsrep_service->wsrep_thd_query_func(T) #define wsrep_thd_query(T) wsrep_service->wsrep_thd_query_func(T)
#define wsrep_thd_retry_counter(T) wsrep_service->wsrep_thd_retry_counter_func(T) #define wsrep_thd_retry_counter(T) wsrep_service->wsrep_thd_retry_counter_func(T)
#define wsrep_thd_ignore_table(T) wsrep_service->wsrep_thd_ignore_table_func(T) #define wsrep_thd_ignore_table(T) wsrep_service->wsrep_thd_ignore_table_func(T)
@ -170,6 +174,9 @@ extern "C" void wsrep_thd_LOCK(const MYSQL_THD thd);
/* Unlock thd wsrep lock */ /* Unlock thd wsrep lock */
extern "C" void wsrep_thd_UNLOCK(const MYSQL_THD thd); extern "C" void wsrep_thd_UNLOCK(const MYSQL_THD thd);
extern "C" void wsrep_thd_kill_LOCK(const MYSQL_THD thd);
extern "C" void wsrep_thd_kill_UNLOCK(const MYSQL_THD thd);
/* Return thd client state string */ /* Return thd client state string */
extern "C" const char* wsrep_thd_client_state_str(const MYSQL_THD thd); extern "C" const char* wsrep_thd_client_state_str(const MYSQL_THD thd);
/* Return thd client mode string */ /* Return thd client mode string */

View File

@ -24,6 +24,7 @@
#include "my_decimal_limits.h" #include "my_decimal_limits.h"
#define HOSTNAME_LENGTH 60 #define HOSTNAME_LENGTH 60
#define HOSTNAME_LENGTH_STR STRINGIFY_ARG(HOSTNAME_LENGTH)
#define SYSTEM_CHARSET_MBMAXLEN 3 #define SYSTEM_CHARSET_MBMAXLEN 3
#define NAME_CHAR_LEN 64 /* Field/table name length */ #define NAME_CHAR_LEN 64 /* Field/table name length */
#define USERNAME_CHAR_LENGTH 128 #define USERNAME_CHAR_LENGTH 128

View File

@ -41,6 +41,6 @@
#define VERSION_thd_specifics 0x0100 #define VERSION_thd_specifics 0x0100
#define VERSION_thd_timezone 0x0100 #define VERSION_thd_timezone 0x0100
#define VERSION_thd_wait 0x0100 #define VERSION_thd_wait 0x0100
#define VERSION_wsrep 0x0202 #define VERSION_wsrep 0x0203
#define VERSION_json 0x0100 #define VERSION_json 0x0100
#define VERSION_thd_mdl 0x0100 #define VERSION_thd_mdl 0x0100

@ -1 +1 @@
Subproject commit 018663324bf9cbe11b0b2191c6fb6c10564bb4e5 Subproject commit e62ff462c58ce154596a0f1da9e79cd4395396e3

View File

@ -625,7 +625,8 @@ int init_embedded_server(int argc, char **argv, char **groups)
(void) thr_setconcurrency(concurrency); // 10 by default (void) thr_setconcurrency(concurrency); // 10 by default
start_handle_manager(); if (flush_time && flush_time != ~(ulong) 0L)
start_handle_manager();
// FIXME initialize binlog_filter and rpl_filter if not already done // FIXME initialize binlog_filter and rpl_filter if not already done
// corresponding delete is in clean_up() // corresponding delete is in clean_up()

View File

@ -2277,7 +2277,7 @@ servers \- remote (federated) servers as \fBCREATE SERVER\fR\&.
.sp -1 .sp -1
.IP \(bu 2.3 .IP \(bu 2.3
.\} .\}
stats \- statistics tables, InnoDB and Engine Independent Table Statistics (EITS), are dumped as \fBINSERT\fR/\fBREPLACE INFO\fR statements without (re)creating tables\&. stats \- statistics tables, InnoDB and Engine Independent Table Statistics (EITS), are dumped as \fBREPLACE INTO\fR (or \fBINSERT IGNORE\fR if \fB\-\-insert\-into\fR is specified) statements without (re)creating tables\&.
.RE .RE
.RS 4 .RS 4
.ie n \{\ .ie n \{\
@ -2287,7 +2287,7 @@ stats \- statistics tables, InnoDB and Engine Independent Table Statistics (EITS
.sp -1 .sp -1
.IP \(bu 2.3 .IP \(bu 2.3
.\} .\}
timezones \- timezone related system tables dumped as \fBINSERT\fR/\fBREPLACE INTO\fR statements without (re)creating tables\&. timezones \- timezone related system tables dumped as \fBREPLACE INTO\fR (or \fBINSERT IGNORE\fR if \fB\-\-insert\-into\fR is specified) statements without (re)creating tables\&.
.RE .RE
.sp .sp
The format of the output is affected by \fB\-\-replace\fR and \fB\-\-insert\-into\fR\&. The \fB\-\-replace\fR option will output \fBCREATE OR REPLACE\fR The format of the output is affected by \fB\-\-replace\fR and \fB\-\-insert\-into\fR\&. The \fB\-\-replace\fR option will output \fBCREATE OR REPLACE\fR
@ -2297,12 +2297,11 @@ With \fB\-\-system=user\fR (or \fBall\fR), and \fB\-\-replace\fR, SQL is generat
.sp .sp
The \fB\-\-insert\-into\fR option will cause \fBCREATE IF NOT EXIST\fR forms of SQL to generated if available. The \fB\-\-insert\-into\fR option will cause \fBCREATE IF NOT EXIST\fR forms of SQL to generated if available.
.sp .sp
For stats, and timezones, \fB\-\-replace\fR and \fB\-\-insert\-info\fR have the usual effects. For stats, and timezones, \fB\-\-replace\fR and \fB\-\-insert\-into\fR have the usual effects.
.sp .sp
Enabling specific options here will cause the relevant tables in the mysql database to be ignored when dumping the mysql database or \fB\-\-all\-databases\fR\&. Enabling specific options here will cause the relevant tables in the mysql database to be ignored when dumping the mysql database or \fB\-\-all\-databases\fR\&.
.sp .sp
Experimentally this option is designed to be able to dump system information from MySQL-5\&.7 and 8\&.0 servers\&. SQL generated is also To help in migrating from MySQL to MariaDB, this option is designed to be able to dump system information from MySQL-5\&.7 and 8\&.0 servers\&. SQL generated is also experimentally compatible with MySQL-5\&.7/8\&.0. Mappings of implementation specific grants/plugins isn't always one-to-one however between MariaDB and MySQL and will require manual changes\&.
experimentally compatible with MySQL-5\&.7/8\&.0\&. Mappings of implemenation specific grants/plugins isn't always one-to-one however\&.
.sp .sp
.RE .RE
.RS 4 .RS 4

View File

@ -235,3 +235,15 @@ a b
insert t1 (b) values (1); insert t1 (b) values (1);
ERROR 23000: CONSTRAINT `CONSTRAINT_1` failed for `test`.`t1` ERROR 23000: CONSTRAINT `CONSTRAINT_1` failed for `test`.`t1`
drop table t1; drop table t1;
#
# MDEV-24274 ALTER TABLE with CHECK CONSTRAINTS gives "Out of Memory" error
#
create table t1 (id varchar(2), constraint id check (id regexp '[a-z]'));
alter table t1 force;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`id` varchar(2) DEFAULT NULL,
CONSTRAINT `id` CHECK (`id` regexp '[a-z]')
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;

View File

@ -176,3 +176,11 @@ select * from t1 where a is null;
--error ER_CONSTRAINT_FAILED --error ER_CONSTRAINT_FAILED
insert t1 (b) values (1); insert t1 (b) values (1);
drop table t1; drop table t1;
--echo #
--echo # MDEV-24274 ALTER TABLE with CHECK CONSTRAINTS gives "Out of Memory" error
--echo #
create table t1 (id varchar(2), constraint id check (id regexp '[a-z]'));
alter table t1 force;
show create table t1;
drop table t1;

View File

@ -1,7 +1,4 @@
call mtr.add_suppression("table or database name 't-1'"); call mtr.add_suppression("table or database name 't-1'");
drop table if exists t1,t2,t3,t4,t5;
drop database if exists mysqltest;
drop view if exists v1;
create table t1 (b char(0)); create table t1 (b char(0));
insert into t1 values (""),(null); insert into t1 values (""),(null);
select * from t1; select * from t1;
@ -1224,7 +1221,7 @@ drop table if exists t1,t2,t3;
# Fix modified for MariaDB: we support this syntax # Fix modified for MariaDB: we support this syntax
create table t1 (a int) transactional=0; create table t1 (a int) transactional=0;
Warnings: Warnings:
Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1' Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=0'
create table t2 (a int) page_checksum=1; create table t2 (a int) page_checksum=1;
create table t3 (a int) row_format=page; create table t3 (a int) row_format=page;
drop table t1,t2,t3; drop table t1,t2,t3;
@ -2000,19 +1997,42 @@ alter table t1 add
key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064 (f64) comment 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'; key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064 (f64) comment 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy';
ERROR HY000: Cannot create table `t1`: index information is too long. Decrease number of indexes or use shorter index names or shorter comments. ERROR HY000: Cannot create table `t1`: index information is too long. Decrease number of indexes or use shorter index names or shorter comments.
drop table t1; drop table t1;
End of 5.5 tests #
# End of 5.5 tests
#
#
# MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS
#
create table t1; create table t1;
ERROR 42000: A table must have at least 1 column ERROR 42000: A table must have at least 1 column
#
# MDEV-11231 Server crashes in check_duplicate_key on CREATE TABLE ... SELECT
#
create table t1 (i int, j int, key(i), key(i)) as select 1 as i, 2 as j; create table t1 (i int, j int, key(i), key(i)) as select 1 as i, 2 as j;
Warnings: Warnings:
Note 1831 Duplicate index `i_2`. This is deprecated and will be disallowed in a future release Note 1831 Duplicate index `i_2`. This is deprecated and will be disallowed in a future release
drop table t1; drop table t1;
#
# End of 10.0 tests
#
#
# MDEV-18428 Memory: If transactional=0 is specified in CREATE TABLE, it is not possible to ALTER TABLE
#
create table t1 (c int(10) unsigned) engine=memory transactional=0;
ERROR HY000: Table storage engine 'MEMORY' does not support the create option 'TRANSACTIONAL=0'
#
# End of 10.2 tests
#
#
# MDEV-17544 No warning when trying to name a primary key constraint.
#
CREATE TABLE t1 ( id1 INT, id2 INT, CONSTRAINT `foo` PRIMARY KEY (id1), CONSTRAINT `bar` UNIQUE KEY(id2)); CREATE TABLE t1 ( id1 INT, id2 INT, CONSTRAINT `foo` PRIMARY KEY (id1), CONSTRAINT `bar` UNIQUE KEY(id2));
Warnings: Warnings:
Warning 1280 Name 'foo' ignored for PRIMARY key. Warning 1280 Name 'foo' ignored for PRIMARY key.
DROP TABLE t1; DROP TABLE t1;
# #
# 10.4 Test # End of 10.3 tests
#
# #
# MDEV-21017: Assertion `!is_set() || (m_status == DA_OK_BULK && # MDEV-21017: Assertion `!is_set() || (m_status == DA_OK_BULK &&
# is_bulk_op())' failed or late ER_PERIOD_FIELD_WRONG_ATTRIBUTES # is_bulk_op())' failed or late ER_PERIOD_FIELD_WRONG_ATTRIBUTES
@ -2025,7 +2045,9 @@ e DATE, PERIOD FOR app(s,e));
ERROR HY000: Period field `s` cannot be GENERATED ALWAYS AS ERROR HY000: Period field `s` cannot be GENERATED ALWAYS AS
UNLOCK TABLES; UNLOCK TABLES;
DROP TABLE t1; DROP TABLE t1;
# End of 10.4 Test #
# End of 10.4 tests
#
CREATE TABLE t1 (id1 INT, id2 INT, primary key (id1), unique index (id2) visible); CREATE TABLE t1 (id1 INT, id2 INT, primary key (id1), unique index (id2) visible);
drop table t1; drop table t1;
# End of 10.5 Test # End of 10.5 Test

View File

@ -5,12 +5,6 @@ call mtr.add_suppression("table or database name 't-1'");
# Check some special create statements. # Check some special create statements.
# #
--disable_warnings
drop table if exists t1,t2,t3,t4,t5;
drop database if exists mysqltest;
drop view if exists v1;
--enable_warnings
create table t1 (b char(0)); create table t1 (b char(0));
insert into t1 values (""),(null); insert into t1 values (""),(null);
select * from t1; select * from t1;
@ -29,30 +23,30 @@ drop table t1;
# Test of some CREATE TABLE'S that should fail # Test of some CREATE TABLE'S that should fail
# #
--error 1146 --error ER_NO_SUCH_TABLE
create table t2 engine=heap select * from t1; create table t2 engine=heap select * from t1;
--error 1146 --error ER_NO_SUCH_TABLE
create table t2 select auto+1 from t1; create table t2 select auto+1 from t1;
drop table if exists t1,t2; drop table if exists t1,t2;
--error 1167 --error ER_WRONG_KEY_COLUMN
create table t1 (b char(0) not null, index(b)); create table t1 (b char(0) not null, index(b));
--error 1163 --error ER_TABLE_CANT_HANDLE_BLOB
create table t1 (a int not null,b text) engine=heap; create table t1 (a int not null,b text) engine=heap;
drop table if exists t1; drop table if exists t1;
--error 1075 --error ER_WRONG_AUTO_KEY
create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) engine=heap; create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null, primary key (ord,ordid)) engine=heap;
-- error 1049 --error ER_BAD_DB_ERROR
create table not_existing_database.test (a int); create table not_existing_database.test (a int);
create table `a/a` (a int); create table `a/a` (a int);
show create table `a/a`; show create table `a/a`;
create table t1 like `a/a`; create table t1 like `a/a`;
drop table `a/a`; drop table `a/a`;
drop table `t1`; drop table `t1`;
--error 1103 --error ER_WRONG_TABLE_NAME
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int); create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa int);
--error 1059 --error ER_TOO_LONG_IDENT
create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int); create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int);
# #
@ -62,17 +56,17 @@ create table t1 (a datetime default now());
drop table t1; drop table t1;
create table t1 (a datetime on update now()); create table t1 (a datetime on update now());
drop table t1; drop table t1;
--error 1067 --error ER_INVALID_DEFAULT
create table t1 (a int default 100 auto_increment); create table t1 (a int default 100 auto_increment);
--error 1067 --error ER_INVALID_DEFAULT
create table t1 (a tinyint default 1000); create table t1 (a tinyint default 1000);
--error 1067 --error ER_INVALID_DEFAULT
create table t1 (a varchar(5) default 'abcdef'); create table t1 (a varchar(5) default 'abcdef');
create table t1 (a varchar(5) default 'abcde'); create table t1 (a varchar(5) default 'abcde');
insert into t1 values(); insert into t1 values();
select * from t1; select * from t1;
--error 1067 --error ER_INVALID_DEFAULT
SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR
alter table t1 alter column a set default 'abcdef'; alter table t1 alter column a set default 'abcdef';
drop table t1; drop table t1;
@ -97,13 +91,13 @@ create table mysqltest.test2$ (a int);
drop table mysqltest.test2$; drop table mysqltest.test2$;
drop database mysqltest; drop database mysqltest;
--error 1103 --error ER_WRONG_TABLE_NAME
create table `` (a int); create table `` (a int);
--error 1103 --error ER_WRONG_TABLE_NAME
drop table if exists ``; drop table if exists ``;
--error 1166 --error ER_WRONG_COLUMN_NAME
create table t1 (`` int); create table t1 (`` int);
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
create table t1 (i int, index `` (i)); create table t1 (i int, index `` (i));
# #
@ -158,13 +152,13 @@ create table t2 (a int) select * from t1;
describe t1; describe t1;
describe t2; describe t2;
drop table if exists t2; drop table if exists t2;
--error 1060 --error ER_DUP_FIELDNAME
create table t2 (a int, a float) select * from t1; create table t2 (a int, a float) select * from t1;
drop table if exists t2; drop table if exists t2;
--error 1060 --error ER_DUP_FIELDNAME
create table t2 (a int) select a as b, a+1 as b from t1; create table t2 (a int) select a as b, a+1 as b from t1;
drop table if exists t2; drop table if exists t2;
--error 1060 --error ER_DUP_FIELDNAME
create table t2 (b int) select a as b, a+1 as b from t1; create table t2 (b int) select a as b, a+1 as b from t1;
drop table if exists t1,t2; drop table if exists t1,t2;
@ -176,7 +170,7 @@ CREATE TABLE t1 (a int not null);
INSERT INTO t1 values (1),(2),(1); INSERT INTO t1 values (1),(2),(1);
--error ER_DUP_ENTRY --error ER_DUP_ENTRY
CREATE TABLE t2 (primary key(a)) SELECT * FROM t1; CREATE TABLE t2 (primary key(a)) SELECT * FROM t1;
--error 1146 --error ER_NO_SUCH_TABLE
SELECT * from t2; SELECT * from t2;
DROP TABLE t1; DROP TABLE t1;
DROP TABLE IF EXISTS t2; DROP TABLE IF EXISTS t2;
@ -202,7 +196,7 @@ SELECT @@default_storage_engine;
CREATE TABLE t1 (a int not null); CREATE TABLE t1 (a int not null);
show create table t1; show create table t1;
drop table t1; drop table t1;
--error 1286 --error ER_UNKNOWN_STORAGE_ENGINE
SET SESSION default_storage_engine="gemini"; SET SESSION default_storage_engine="gemini";
SELECT @@default_storage_engine; SELECT @@default_storage_engine;
CREATE TABLE t1 (a int not null); CREATE TABLE t1 (a int not null);
@ -216,11 +210,11 @@ drop table t1;
# #
create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2)); create table t1 ( k1 varchar(2), k2 int, primary key(k1,k2));
insert into t1 values ("a", 1), ("b", 2); insert into t1 values ("a", 1), ("b", 2);
--error 1048 --error ER_BAD_NULL_ERROR
insert into t1 values ("c", NULL); insert into t1 values ("c", NULL);
--error 1048 --error ER_BAD_NULL_ERROR
insert into t1 values (NULL, 3); insert into t1 values (NULL, 3);
--error 1048 --error ER_BAD_NULL_ERROR
insert into t1 values (NULL, NULL); insert into t1 values (NULL, NULL);
drop table t1; drop table t1;
@ -262,11 +256,11 @@ drop table t1;
# "Table truncated when creating another table name with Spaces" # "Table truncated when creating another table name with Spaces"
# #
--error 1103 --error ER_WRONG_TABLE_NAME
create table `t1 `(a int); create table `t1 `(a int);
--error 1102 --error ER_WRONG_DB_NAME
create database `db1 `; create database `db1 `;
--error 1166 --error ER_WRONG_COLUMN_NAME
create table t1(`a ` int); create table t1(`a ` int);
# #
@ -274,11 +268,11 @@ create table t1(`a ` int);
# "Parser permits multiple commas without syntax error" # "Parser permits multiple commas without syntax error"
# #
--error 1064 --error ER_PARSE_ERROR
create table t1 (a int,); create table t1 (a int,);
--error 1064 --error ER_PARSE_ERROR
create table t1 (a int,,b int); create table t1 (a int,,b int);
--error 1064 --error ER_PARSE_ERROR
create table t1 (,b int); create table t1 (,b int);
# #
@ -320,13 +314,13 @@ create table t2 like t3;
show create table t2; show create table t2;
select * from t2; select * from t2;
create table t3 like t1; create table t3 like t1;
--error 1050 --error ER_TABLE_EXISTS_ERROR
create table t3 like mysqltest.t3; create table t3 like mysqltest.t3;
--error 1049 --error ER_BAD_DB_ERROR
create table non_existing_database.t1 like t1; create table non_existing_database.t1 like t1;
--error ER_NO_SUCH_TABLE --error ER_NO_SUCH_TABLE
create table t4 like non_existing_table; create table t4 like non_existing_table;
--error 1050 --error ER_TABLE_EXISTS_ERROR
create temporary table t3 like t1; create temporary table t3 like t1;
drop table t1, t2, t3; drop table t1, t2, t3;
drop table t3; drop table t3;
@ -360,7 +354,7 @@ SELECT @@default_storage_engine;
CREATE TABLE t1 (a int not null); CREATE TABLE t1 (a int not null);
show create table t1; show create table t1;
drop table t1; drop table t1;
--error 1286 --error ER_UNKNOWN_STORAGE_ENGINE
SET SESSION default_storage_engine="gemini"; SET SESSION default_storage_engine="gemini";
SELECT @@default_storage_engine; SELECT @@default_storage_engine;
CREATE TABLE t1 (a int not null); CREATE TABLE t1 (a int not null);
@ -480,9 +474,9 @@ use test;
# Test for Bug 856 'Naming a key "Primary" causes trouble' # Test for Bug 856 'Naming a key "Primary" causes trouble'
# #
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
create table t1 (a int, index `primary` (a)); create table t1 (a int, index `primary` (a));
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
create table t1 (a int, index `PRIMARY` (a)); create table t1 (a int, index `PRIMARY` (a));
create table t1 (`primary` int, index(`primary`)); create table t1 (`primary` int, index(`primary`));
@ -491,9 +485,9 @@ create table t2 (`PRIMARY` int, index(`PRIMARY`));
show create table t2; show create table t2;
create table t3 (a int); create table t3 (a int);
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
alter table t3 add index `primary` (a); alter table t3 add index `primary` (a);
--error 1280 --error ER_WRONG_NAME_FOR_INDEX
alter table t3 add index `PRIMARY` (a); alter table t3 add index `PRIMARY` (a);
create table t4 (`primary` int); create table t4 (`primary` int);
@ -548,11 +542,11 @@ drop table t1;
# #
# Bug#10413: Invalid column name is not rejected # Bug#10413: Invalid column name is not rejected
# #
--error 1103 --error ER_WRONG_TABLE_NAME
create table t1(column.name int); create table t1(column.name int);
--error 1103 --error ER_WRONG_TABLE_NAME
create table t1(test.column.name int); create table t1(test.column.name int);
--error 1102 --error ER_WRONG_DB_NAME
create table t1(xyz.t1.name int); create table t1(xyz.t1.name int);
create table t1(t1.name int); create table t1(t1.name int);
create table t2(test.t2.name int); create table t2(test.t2.name int);
@ -591,7 +585,7 @@ drop table if exists test.t1;
create database mysqltest; create database mysqltest;
use mysqltest; use mysqltest;
create view v1 as select 'foo' from dual; create view v1 as select 'foo' from dual;
--error 1347 --error ER_WRONG_OBJECT
create table t1 like v1; create table t1 like v1;
drop view v1; drop view v1;
drop database mysqltest; drop database mysqltest;
@ -712,7 +706,7 @@ drop table t1, t2;
# #
# Bug #15316 SET value having comma not correctly handled # Bug #15316 SET value having comma not correctly handled
# #
--error 1367 --error ER_ILLEGAL_VALUE_FOR_TYPE
create table t1(a set("a,b","c,d") not null); create table t1(a set("a,b","c,d") not null);
# End of 4.1 tests # End of 4.1 tests
@ -914,9 +908,9 @@ INSERT IGNORE INTO t1 (b) VALUES (5);
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
SELECT a FROM t1; SELECT a FROM t1;
--error 1062 --error ER_DUP_ENTRY
INSERT INTO t2 SELECT a FROM t1; INSERT INTO t2 SELECT a FROM t1;
--error 1062 --error ER_DUP_ENTRY
INSERT INTO t2 SELECT a FROM t1; INSERT INTO t2 SELECT a FROM t1;
DROP TABLE t1, t2; DROP TABLE t1, t2;
@ -976,24 +970,24 @@ drop table t1,t2;
# Test incorrect database names # Test incorrect database names
# #
--error 1102 --error ER_WRONG_DB_NAME
CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
--error 1102 --error ER_WRONG_DB_NAME
DROP DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; DROP DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# TODO: enable these tests when RENAME DATABASE is implemented. # TODO: enable these tests when RENAME DATABASE is implemented.
# --error 1049 # --error ER_BAD_DB_ERROR
# RENAME DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TO a; # RENAME DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TO a;
# --error 1102 # --error ER_WRONG_DB_NAME
# RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; # RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# create database mysqltest; # create database mysqltest;
# --error 1102 # --error ER_WRONG_DB_NAME
# RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; # RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# drop database mysqltest; # drop database mysqltest;
--error 1102 --error ER_WRONG_DB_NAME
USE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; USE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
--error 1102 --error ER_WRONG_DB_NAME
SHOW CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; SHOW CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
# #
@ -1853,28 +1847,46 @@ alter table t1 add
key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064 (f64) comment 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'; key xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0064 (f64) comment 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy';
drop table t1; drop table t1;
--echo End of 5.5 tests --echo #
--echo # End of 5.5 tests
--echo #
# --echo #
# MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS --echo # MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS
# --echo #
--error ER_TABLE_MUST_HAVE_COLUMNS --error ER_TABLE_MUST_HAVE_COLUMNS
create table t1; create table t1;
# --echo #
# MDEV-11231 Server crashes in check_duplicate_key on CREATE TABLE ... SELECT --echo # MDEV-11231 Server crashes in check_duplicate_key on CREATE TABLE ... SELECT
# --echo #
create table t1 (i int, j int, key(i), key(i)) as select 1 as i, 2 as j; create table t1 (i int, j int, key(i), key(i)) as select 1 as i, 2 as j;
drop table t1; drop table t1;
# --echo #
# MDEV-17544 No warning when trying to name a primary key constraint. --echo # End of 10.0 tests
# --echo #
--echo #
--echo # MDEV-18428 Memory: If transactional=0 is specified in CREATE TABLE, it is not possible to ALTER TABLE
--echo #
--error ER_ILLEGAL_HA_CREATE_OPTION
create table t1 (c int(10) unsigned) engine=memory transactional=0;
--echo #
--echo # End of 10.2 tests
--echo #
--echo #
--echo # MDEV-17544 No warning when trying to name a primary key constraint.
--echo #
CREATE TABLE t1 ( id1 INT, id2 INT, CONSTRAINT `foo` PRIMARY KEY (id1), CONSTRAINT `bar` UNIQUE KEY(id2)); CREATE TABLE t1 ( id1 INT, id2 INT, CONSTRAINT `foo` PRIMARY KEY (id1), CONSTRAINT `bar` UNIQUE KEY(id2));
DROP TABLE t1; DROP TABLE t1;
--echo # --echo #
--echo # 10.4 Test --echo # End of 10.3 tests
--echo #
--echo # --echo #
--echo # MDEV-21017: Assertion `!is_set() || (m_status == DA_OK_BULK && --echo # MDEV-21017: Assertion `!is_set() || (m_status == DA_OK_BULK &&
--echo # is_bulk_op())' failed or late ER_PERIOD_FIELD_WRONG_ATTRIBUTES --echo # is_bulk_op())' failed or late ER_PERIOD_FIELD_WRONG_ATTRIBUTES
@ -1890,7 +1902,9 @@ e DATE, PERIOD FOR app(s,e));
UNLOCK TABLES; UNLOCK TABLES;
DROP TABLE t1; DROP TABLE t1;
--echo # End of 10.4 Test --echo #
--echo # End of 10.4 tests
--echo #
# #
# MDEV-22199 Add VISIBLE option for indexes in create table # MDEV-22199 Add VISIBLE option for indexes in create table

View File

@ -1306,7 +1306,7 @@ create table t1 (a varchar(334) character set utf32 primary key);
ERROR 42000: Specified key was too long; max key length is 1000 bytes ERROR 42000: Specified key was too long; max key length is 1000 bytes
create table t1 (a varchar(333) character set utf32, key(a)); create table t1 (a varchar(333) character set utf32, key(a));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
insert into t1 values (repeat('a',333)), (repeat('b',333)); insert into t1 values (repeat('a',333)), (repeat('b',333));
flush tables; flush tables;
check table t1; check table t1;

View File

@ -1478,7 +1478,7 @@ a varchar(255) NOT NULL default '',
KEY a (a) KEY a (a)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
insert into t1 values (_utf8mb4 0xe880bd); insert into t1 values (_utf8mb4 0xe880bd);
insert into t1 values (_utf8mb4 0x5b); insert into t1 values (_utf8mb4 0x5b);
select hex(a) from t1; select hex(a) from t1;
@ -1526,7 +1526,7 @@ Warnings:
Note 1051 Unknown table 'test.t1' Note 1051 Unknown table 'test.t1'
CREATE TABLE t1(a VARCHAR(255), KEY(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; CREATE TABLE t1(a VARCHAR(255), KEY(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
INSERT INTO t1 VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'); INSERT INTO t1 VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
INSERT INTO t1 VALUES('uu'); INSERT INTO t1 VALUES('uu');
check table t1; check table t1;
@ -2726,7 +2726,7 @@ DEFAULT CHARACTER SET utf8,
MODIFY subject varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, MODIFY subject varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
MODIFY p varchar(255) CHARACTER SET utf8; MODIFY p varchar(255) CHARACTER SET utf8;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (

View File

@ -1443,7 +1443,7 @@ a varchar(255) NOT NULL default '',
KEY a (a) KEY a (a)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci; ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
insert into t1 values (_utf8mb4 0xe880bd); insert into t1 values (_utf8mb4 0xe880bd);
insert into t1 values (_utf8mb4 0x5b); insert into t1 values (_utf8mb4 0x5b);
select hex(a) from t1; select hex(a) from t1;
@ -1491,7 +1491,7 @@ Warnings:
Note 1051 Unknown table 'test.t1' Note 1051 Unknown table 'test.t1'
CREATE TABLE t1(a VARCHAR(255), KEY(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; CREATE TABLE t1(a VARCHAR(255), KEY(a)) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
INSERT INTO t1 VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'); INSERT INTO t1 VALUES('uuABCDEFGHIGKLMNOPRSTUVWXYZ̈bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb');
INSERT INTO t1 VALUES('uu'); INSERT INTO t1 VALUES('uu');
check table t1; check table t1;

View File

@ -104,6 +104,9 @@ a
NULL NULL
Warnings: Warnings:
Warning 4076 Incorrect GeoJSON format - empty 'coordinates' array. Warning 4076 Incorrect GeoJSON format - empty 'coordinates' array.
SELECT ST_GEOMFROMGEOJSON("{ \"type\": \"Feature\", \"geometry\": [10, 20] }");
ST_GEOMFROMGEOJSON("{ \"type\": \"Feature\", \"geometry\": [10, 20] }")
NULL
# #
# End of 10.2 tests # End of 10.2 tests
# #

View File

@ -44,6 +44,8 @@ SELECT st_astext(st_geomfromgeojson('{"type": "MultiLineString","coordinates": [
SELECT st_astext(st_geomfromgeojson('{"type": "Polygon","coordinates": []}')) as a; SELECT st_astext(st_geomfromgeojson('{"type": "Polygon","coordinates": []}')) as a;
SELECT st_astext(st_geomfromgeojson('{"type": "MultiPolygon","coordinates": []}')) as a; SELECT st_astext(st_geomfromgeojson('{"type": "MultiPolygon","coordinates": []}')) as a;
SELECT ST_GEOMFROMGEOJSON("{ \"type\": \"Feature\", \"geometry\": [10, 20] }");
--echo # --echo #
--echo # End of 10.2 tests --echo # End of 10.2 tests
--echo # --echo #

View File

@ -2893,6 +2893,52 @@ GROUP BY t.table_name;
ERROR HY001: Out of sort memory, consider increasing server sort buffer size ERROR HY001: Out of sort memory, consider increasing server sort buffer size
SET max_sort_length= @save_max_sort_length; SET max_sort_length= @save_max_sort_length;
# #
# MDEV-23826: ORDER BY in view definition leads to wrong result with GROUP BY on query using view
#
CREATE TABLE t1
(
id INT PRIMARY KEY AUTO_INCREMENT,
dt datetime,
INDEX(dt),
foo int
);
INSERT INTO t1 VALUES (1,'2020-09-26 12:00:00',1);
INSERT INTO t1 VALUES (2,'2020-09-26 13:00:00',1);
INSERT INTO t1 VALUES (3,'2020-09-27 13:00:00',1);
INSERT INTO t1 VALUES (4,'2020-09-27 12:00:00',1);
INSERT INTO t1 VALUES (5,'2020-09-28 12:00:00',1);
INSERT INTO t1 VALUES (6,'2020-09-28 13:00:00',1);
INSERT INTO t1 VALUES (7,'2020-09-25 12:00:00',1);
INSERT INTO t1 VALUES (8,'2020-09-25 13:00:00',1);
INSERT INTO t1 VALUES (9,'2020-09-26 13:00:00',1);
CREATE VIEW v1 AS SELECT * FROM t1;
CREATE VIEW v2 AS SELECT * FROM t1 ORDER BY dt;
SELECT dt, sum(foo) AS foo FROM v1 WHERE dt>DATE_SUB('2020-09-27 00:00:00', INTERVAL 3 DAY) GROUP BY dt;
dt foo
2020-09-25 12:00:00 1
2020-09-25 13:00:00 1
2020-09-26 12:00:00 1
2020-09-26 13:00:00 2
2020-09-27 12:00:00 1
2020-09-27 13:00:00 1
2020-09-28 12:00:00 1
2020-09-28 13:00:00 1
SELECT dt, sum(foo) AS foo FROM v2 WHERE dt>DATE_SUB('2020-09-27 00:00:00', INTERVAL 3 DAY) GROUP BY dt;
dt foo
2020-09-25 12:00:00 1
2020-09-25 13:00:00 1
2020-09-26 12:00:00 1
2020-09-26 13:00:00 2
2020-09-27 12:00:00 1
2020-09-27 13:00:00 1
2020-09-28 12:00:00 1
2020-09-28 13:00:00 1
DROP TABLE t1;
DROP VIEW v1,v2;
#
# End of 10.2 tests
#
#
# MDEV-16170 # MDEV-16170
# Server crashes in Item_null_result::type_handler on SELECT with ROLLUP # Server crashes in Item_null_result::type_handler on SELECT with ROLLUP
# #
@ -2903,4 +2949,6 @@ f COUNT(*)
1 1 1 1
NULL 1 NULL 1
DROP TABLE t1; DROP TABLE t1;
#
# End of 10.3 tests # End of 10.3 tests
#

View File

@ -1994,7 +1994,6 @@ drop table t1;
--echo # GROUP BY leads to crash --echo # GROUP BY leads to crash
--echo # --echo #
CALL mtr.add_suppression("Out of sort memory"); CALL mtr.add_suppression("Out of sort memory");
CALL mtr.add_suppression("Sort aborted"); CALL mtr.add_suppression("Sort aborted");
SET @save_max_sort_length= @@max_sort_length; SET @save_max_sort_length= @@max_sort_length;
@ -2006,6 +2005,40 @@ WHERE c.table_schema=(SELECT COUNT(*) FROM INFORMATION_SCHEMA.columns GROUP BY c
GROUP BY t.table_name; GROUP BY t.table_name;
SET max_sort_length= @save_max_sort_length; SET max_sort_length= @save_max_sort_length;
--echo #
--echo # MDEV-23826: ORDER BY in view definition leads to wrong result with GROUP BY on query using view
--echo #
CREATE TABLE t1
(
id INT PRIMARY KEY AUTO_INCREMENT,
dt datetime,
INDEX(dt),
foo int
);
INSERT INTO t1 VALUES (1,'2020-09-26 12:00:00',1);
INSERT INTO t1 VALUES (2,'2020-09-26 13:00:00',1);
INSERT INTO t1 VALUES (3,'2020-09-27 13:00:00',1);
INSERT INTO t1 VALUES (4,'2020-09-27 12:00:00',1);
INSERT INTO t1 VALUES (5,'2020-09-28 12:00:00',1);
INSERT INTO t1 VALUES (6,'2020-09-28 13:00:00',1);
INSERT INTO t1 VALUES (7,'2020-09-25 12:00:00',1);
INSERT INTO t1 VALUES (8,'2020-09-25 13:00:00',1);
INSERT INTO t1 VALUES (9,'2020-09-26 13:00:00',1);
CREATE VIEW v1 AS SELECT * FROM t1;
CREATE VIEW v2 AS SELECT * FROM t1 ORDER BY dt;
SELECT dt, sum(foo) AS foo FROM v1 WHERE dt>DATE_SUB('2020-09-27 00:00:00', INTERVAL 3 DAY) GROUP BY dt;
SELECT dt, sum(foo) AS foo FROM v2 WHERE dt>DATE_SUB('2020-09-27 00:00:00', INTERVAL 3 DAY) GROUP BY dt;
DROP TABLE t1;
DROP VIEW v1,v2;
--echo #
--echo # End of 10.2 tests
--echo #
--echo # --echo #
--echo # MDEV-16170 --echo # MDEV-16170
--echo # Server crashes in Item_null_result::type_handler on SELECT with ROLLUP --echo # Server crashes in Item_null_result::type_handler on SELECT with ROLLUP
@ -2016,4 +2049,6 @@ INSERT INTO t1 VALUES ('2032-10-08');
SELECT d != '2023-03-04' AS f, COUNT(*) FROM t1 GROUP BY d WITH ROLLUP; SELECT d != '2023-03-04' AS f, COUNT(*) FROM t1 GROUP BY d WITH ROLLUP;
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # End of 10.3 tests --echo # End of 10.3 tests
--echo #

View File

@ -2228,6 +2228,18 @@ TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAUL
Warnings: Warnings:
Warning 1931 Query execution was interrupted. The query examined at least ### rows, which exceeds LIMIT ROWS EXAMINED (10). The query result may be incomplete Warning 1931 Query execution was interrupted. The query examined at least ### rows, which exceeds LIMIT ROWS EXAMINED (10). The query result may be incomplete
# #
# MDEV-24179: AAssertion `m_status == DA_ERROR || m_status == DA_OK ||
# m_status == DA_OK_BULK' failed in Diagnostics_area::message()
#
call mtr.add_suppression("Sort aborted.*");
DROP DATABASE test;
CREATE DATABASE test;
USE test;
CREATE VIEW v AS SELECT table_schema AS object_schema, table_name AS object_name, table_type AS object_type FROM information_schema.tables ORDER BY object_schema;
SELECT * FROM v LIMIT ROWS EXAMINED 9;
ERROR HY000: Sort aborted:
DROP VIEW v;
#
# End of 10.2 Test # End of 10.2 Test
# #
# #

View File

@ -1931,6 +1931,23 @@ SELECT SCHEMA_NAME from information_schema.schemata where schema_name=REPEAT('a'
replace_regex /at least \d+ rows/at least ### rows/; replace_regex /at least \d+ rows/at least ### rows/;
SELECT * FROM INFORMATION_SCHEMA.`COLUMNS` LIMIT ROWS EXAMINED 10; SELECT * FROM INFORMATION_SCHEMA.`COLUMNS` LIMIT ROWS EXAMINED 10;
--echo #
--echo # MDEV-24179: AAssertion `m_status == DA_ERROR || m_status == DA_OK ||
--echo # m_status == DA_OK_BULK' failed in Diagnostics_area::message()
--echo #
call mtr.add_suppression("Sort aborted.*");
DROP DATABASE test;
CREATE DATABASE test;
USE test;
CREATE VIEW v AS SELECT table_schema AS object_schema, table_name AS object_name, table_type AS object_type FROM information_schema.tables ORDER BY object_schema;
--error ER_FILSORT_ABORT
SELECT * FROM v LIMIT ROWS EXAMINED 9;
DROP VIEW v;
--echo # --echo #
--echo # End of 10.2 Test --echo # End of 10.2 Test
--echo # --echo #

View File

@ -413,3 +413,8 @@ ALTER TABLE t2 DROP c;
UNLOCK TABLES; UNLOCK TABLES;
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1, t2; DROP TABLE t1, t2;
#
# KILL QUERY ID USER
#
kill query id user 'foo';
ERROR 42S22: Unknown column 'user' in 'field list'

View File

@ -663,3 +663,9 @@ ALTER TABLE t2 DROP c;
UNLOCK TABLES; UNLOCK TABLES;
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1, t2; DROP TABLE t1, t2;
--echo #
--echo # KILL QUERY ID USER
--echo #
--error ER_BAD_FIELD_ERROR
kill query id user 'foo';

View File

@ -1439,7 +1439,7 @@ drop table t1;
create table t1(a varchar(4000)); create table t1(a varchar(4000));
alter table t1 add index(a); alter table t1 add index(a);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (

View File

@ -149,7 +149,7 @@ ALTER TABLE t1 DROP KEY f, ADD INDEX idx1(f), ALGORITHM=INSTANT;
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
ALTER TABLE t1 ADD KEY idx2(f); ALTER TABLE t1 ADD KEY idx2(f);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 3072 bytes Note 1071 Specified key was too long; max key length is 3072 bytes
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1(a blob , b blob , unique(a,b)); CREATE TABLE t1(a blob , b blob , unique(a,b));
alter table t1 drop column b; alter table t1 drop column b;

View File

@ -1990,7 +1990,7 @@ a b
drop table t1; drop table t1;
create table t1 (v varchar(65530), key(v)); create table t1 (v varchar(65530), key(v));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
drop table t1; drop table t1;
SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR
create table t1 (v varchar(65536)); create table t1 (v varchar(65536));

View File

@ -1706,7 +1706,7 @@ a b
drop table t1; drop table t1;
create table t1 (v varchar(65530), key(v)); create table t1 (v varchar(65530), key(v));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
drop table if exists t1; drop table if exists t1;
set statement sql_mode = 'NO_ENGINE_SUBSTITUTION' for set statement sql_mode = 'NO_ENGINE_SUBSTITUTION' for
create table t1 (v varchar(65536)); create table t1 (v varchar(65536));
@ -1980,7 +1980,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a varchar(2048), key `a` (a)); create table t1 (a varchar(2048), key `a` (a));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -1990,7 +1990,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a varchar(2048), key `a` (a) key_block_size=1024); create table t1 (a varchar(2048), key `a` (a) key_block_size=1024);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -2000,7 +2000,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=1024; create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=1024;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -2046,7 +2046,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=8192; create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=8192;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -2136,7 +2136,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a int not null, b varchar(2048), key (a) key_block_size=1024, key(b)) key_block_size=8192; create table t1 (a int not null, b varchar(2048), key (a) key_block_size=1024, key(b)) key_block_size=8192;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -2166,7 +2166,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000); create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -2412,6 +2412,7 @@ Key Start Len Index Type
1 2 30 multip. varchar 1 2 30 multip. varchar
2 33 30 multip. char NULL 2 33 30 multip. char NULL
DROP TABLE t1; DROP TABLE t1;
set statement sql_mode='' for
create table t1 (n int not null, c char(1)) transactional=1; create table t1 (n int not null, c char(1)) transactional=1;
Warnings: Warnings:
Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1' Warning 1478 Table storage engine 'MyISAM' does not support the create option 'TRANSACTIONAL=1'

View File

@ -1557,6 +1557,7 @@ DROP TABLE t1;
# MariaDB: Note that the table will still have 'TRANSACTIONAL=1' attribute. # MariaDB: Note that the table will still have 'TRANSACTIONAL=1' attribute.
# That's the intended behavior atm. # That's the intended behavior atm.
# #
set statement sql_mode='' for
create table t1 (n int not null, c char(1)) transactional=1; create table t1 (n int not null, c char(1)) transactional=1;
show create table t1; show create table t1;
drop table t1; drop table t1;

View File

@ -688,8 +688,88 @@ root N
root N root N
root N root N
aRole Y aRole Y
DROP ROLE aRole;
#
# MDEV-24122 Fix previously MySQL-5.7 data directories that upgraded prior to MDEV-23201
#
# switching from mysql.global_priv to mysql.user
drop view mysql.user_bak;
drop table mysql.user;
truncate table mysql.tables_priv;
FLUSH TABLES mysql.user;
ALTER TABLE mysql.user ADD is_role enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
ALTER TABLE mysql.user ADD default_role char(80) binary DEFAULT '' NOT NULL;
ALTER TABLE mysql.user ADD max_statement_time decimal(12,6) DEFAULT 0 NOT NULL;
FLUSH PRIVILEGES;
Phase 1/7: 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_bak 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 OK
mysql.innodb_table_stats OK
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 OK
mysql.user OK
Phase 2/7: Installing used storage engines... Skipped
Phase 3/7: Fixing views
Phase 4/7: Running 'mysql_fix_privilege_tables'
Phase 5/7: Fixing table and database names
Phase 6/7: Checking and upgrading tables
Processing databases
information_schema
mtr
mtr.global_suppressions OK
mtr.test_suppressions OK
performance_schema
test
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK
SHOW CREATE TABLE mysql.user;
View Create View character_set_client collation_connection
user CREATE ALGORITHM=UNDEFINED DEFINER=`mariadb.sys`@`localhost` SQL SECURITY DEFINER VIEW `mysql`.`user` AS select `mysql`.`global_priv`.`Host` AS `Host`,`mysql`.`global_priv`.`User` AS `User`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.plugin') in ('mysql_native_password','mysql_old_password'),ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.authentication_string'),''),'') AS `Password`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 1,'Y','N') AS `Select_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 2,'Y','N') AS `Insert_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 4,'Y','N') AS `Update_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 8,'Y','N') AS `Delete_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 16,'Y','N') AS `Create_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 32,'Y','N') AS `Drop_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 64,'Y','N') AS `Reload_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 128,'Y','N') AS `Shutdown_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 256,'Y','N') AS `Process_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 512,'Y','N') AS `File_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 1024,'Y','N') AS `Grant_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 2048,'Y','N') AS `References_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 4096,'Y','N') AS `Index_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 8192,'Y','N') AS `Alter_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 16384,'Y','N') AS `Show_db_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 32768,'Y','N') AS `Super_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 65536,'Y','N') AS `Create_tmp_table_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 131072,'Y','N') AS `Lock_tables_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 262144,'Y','N') AS `Execute_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 524288,'Y','N') AS `Repl_slave_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 1048576,'Y','N') AS `Repl_client_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 2097152,'Y','N') AS `Create_view_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 4194304,'Y','N') AS `Show_view_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 8388608,'Y','N') AS `Create_routine_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 16777216,'Y','N') AS `Alter_routine_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 33554432,'Y','N') AS `Create_user_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 67108864,'Y','N') AS `Event_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 134217728,'Y','N') AS `Trigger_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 268435456,'Y','N') AS `Create_tablespace_priv`,if(json_value(`mysql`.`global_priv`.`Priv`,'$.access') & 536870912,'Y','N') AS `Delete_history_priv`,elt(ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.ssl_type'),0) + 1,'','ANY','X509','SPECIFIED') AS `ssl_type`,ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.ssl_cipher'),'') AS `ssl_cipher`,ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.x509_issuer'),'') AS `x509_issuer`,ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.x509_subject'),'') AS `x509_subject`,cast(ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.max_questions'),0) as unsigned) AS `max_questions`,cast(ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.max_updates'),0) as unsigned) AS `max_updates`,cast(ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.max_connections'),0) as unsigned) AS `max_connections`,cast(ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.max_user_connections'),0) as signed) AS `max_user_connections`,ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.plugin'),'') AS `plugin`,ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.authentication_string'),'') AS `authentication_string`,'N' AS `password_expired`,elt(ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.is_role'),0) + 1,'N','Y') AS `is_role`,ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.default_role'),'') AS `default_role`,cast(ifnull(json_value(`mysql`.`global_priv`.`Priv`,'$.max_statement_time'),0.0) as decimal(12,6)) AS `max_statement_time` from `mysql`.`global_priv` latin1 latin1_swedish_ci
CREATE ROLE `aRole`;
SET DEFAULT ROLE aRole;
SHOW GRANTS;
Grants for root@localhost
GRANT `aRole` TO `root`@`localhost` WITH ADMIN OPTION
GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
GRANT USAGE ON *.* TO `aRole`
SET DEFAULT ROLE aRole FOR 'root'@'localhost'
SET DEFAULT ROLE NONE;
SHOW GRANTS;
Grants for root@localhost
GRANT `aRole` TO `root`@`localhost` WITH ADMIN OPTION
GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
GRANT USAGE ON *.* TO `aRole`
DROP ROLE `aRole`; DROP ROLE `aRole`;
FLUSH PRIVILEGES; FLUSH PRIVILEGES;
drop table mysql.global_priv;
rename table mysql.global_priv_bak to mysql.global_priv;
# End of 10.2 tests # End of 10.2 tests
# #
# Ensure that mysql_upgrade correctly sets truncate_versioning_priv # Ensure that mysql_upgrade correctly sets truncate_versioning_priv

View File

@ -243,10 +243,42 @@ FLUSH PRIVILEGES;
SET ROLE `aRole`; SET ROLE `aRole`;
SELECT `User`, `is_role` FROM `mysql`.`user`; SELECT `User`, `is_role` FROM `mysql`.`user`;
DROP ROLE aRole;
--echo #
--echo # MDEV-24122 Fix previously MySQL-5.7 data directories that upgraded prior to MDEV-23201
--echo #
--source include/switch_to_mysql_user.inc
drop view mysql.user_bak;
drop table mysql.user;
truncate table mysql.tables_priv;
--copy_file std_data/mysql57user.frm $MYSQLD_DATADIR/mysql/user.frm
--copy_file std_data/mysql57user.MYI $MYSQLD_DATADIR/mysql/user.MYI
--copy_file std_data/mysql57user.MYD $MYSQLD_DATADIR/mysql/user.MYD
FLUSH TABLES mysql.user;
# What prior to MDEV-23201 would of done:
ALTER TABLE mysql.user ADD is_role enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
ALTER TABLE mysql.user ADD default_role char(80) binary DEFAULT '' NOT NULL;
ALTER TABLE mysql.user ADD max_statement_time decimal(12,6) DEFAULT 0 NOT NULL;
FLUSH PRIVILEGES;
--exec $MYSQL_UPGRADE --force 2>&1
SHOW CREATE TABLE mysql.user;
CREATE ROLE `aRole`;
SET DEFAULT ROLE aRole;
SHOW GRANTS;
SET DEFAULT ROLE NONE;
SHOW GRANTS;
DROP ROLE `aRole`; DROP ROLE `aRole`;
--exec $MYSQL mysql < $MYSQLTEST_VARDIR/tmp/user.sql --exec $MYSQL mysql < $MYSQLTEST_VARDIR/tmp/user.sql
FLUSH PRIVILEGES; FLUSH PRIVILEGES;
--remove_file $MYSQLD_DATADIR/mysql_upgrade_info --remove_file $MYSQLD_DATADIR/mysql_upgrade_info
drop table mysql.global_priv;
rename table mysql.global_priv_bak to mysql.global_priv;
--echo # End of 10.2 tests --echo # End of 10.2 tests

File diff suppressed because one or more lines are too long

View File

@ -1,14 +1,10 @@
call mtr.add_suppression("@003f.frm' \\(errno: 22\\)"); call mtr.add_suppression("@003f.frm' \\(errno: 22\\)");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
# Bug#37938 Test "mysqldump" lacks various insert statements # Bug#37938 Test "mysqldump" lacks various insert statements
# Turn off concurrent inserts to avoid random errors # Turn off concurrent inserts to avoid random errors
# NOTE: We reset the variable back to saved value at the end of test # NOTE: We reset the variable back to saved value at the end of test
SET @OLD_CONCURRENT_INSERT = @@GLOBAL.CONCURRENT_INSERT; SET @OLD_CONCURRENT_INSERT = @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT = 0; SET @@GLOBAL.CONCURRENT_INSERT = 0;
DROP TABLE IF EXISTS t1, `"t"1`, t1aa, t2, t2aa, t3;
drop database if exists mysqldump_test_db;
drop database if exists db1;
drop database if exists db2;
drop view if exists v1, v2, v3;
CREATE TABLE t1(a INT, KEY (a)) KEY_BLOCK_SIZE=1024; CREATE TABLE t1(a INT, KEY (a)) KEY_BLOCK_SIZE=1024;
INSERT INTO t1 VALUES (1), (2); INSERT INTO t1 VALUES (1), (2);
<?xml version="1.0"?> <?xml version="1.0"?>
@ -5725,6 +5721,315 @@ DELIMITER ;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
DROP TABLE t1; DROP TABLE t1;
#
# MDEV-20939: Race condition between mysqldump import and InnoDB
# persistent statistics calculation
#
#
# Without --replace and --insert-ignore
#
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `innodb_index_stats`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb_index_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(199) COLLATE utf8_bin NOT NULL,
`index_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
`stat_value` bigint(20) unsigned NOT NULL,
`sample_size` bigint(20) unsigned DEFAULT NULL,
`stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
DROP TABLE IF EXISTS `innodb_table_stats`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb_table_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(199) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`n_rows` bigint(20) unsigned NOT NULL,
`clustered_index_size` bigint(20) unsigned NOT NULL,
`sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`database_name`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `general_log` (
`event_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
`user_host` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`command_type` varchar(64) NOT NULL,
`argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `slow_log` (
`start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
`user_host` mediumtext NOT NULL,
`query_time` time(6) NOT NULL,
`lock_time` time(6) NOT NULL,
`rows_sent` int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
`db` varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
`insert_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`sql_text` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`rows_affected` int(11) NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `transaction_registry` (
`transaction_id` bigint(20) unsigned NOT NULL,
`commit_id` bigint(20) unsigned NOT NULL,
`begin_timestamp` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
`commit_timestamp` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
`isolation_level` enum('READ-UNCOMMITTED','READ-COMMITTED','REPEATABLE-READ','SERIALIZABLE') COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`transaction_id`),
UNIQUE KEY `commit_id` (`commit_id`),
KEY `begin_timestamp` (`begin_timestamp`),
KEY `commit_timestamp` (`commit_timestamp`,`transaction_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
#
# With --replace
#
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `innodb_index_stats`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb_index_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(199) COLLATE utf8_bin NOT NULL,
`index_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
`stat_value` bigint(20) unsigned NOT NULL,
`sample_size` bigint(20) unsigned DEFAULT NULL,
`stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
LOCK TABLES `innodb_index_stats` WRITE;
/*!40000 ALTER TABLE `innodb_index_stats` DISABLE KEYS */;
/*!40000 ALTER TABLE `innodb_index_stats` ENABLE KEYS */;
UNLOCK TABLES;
DROP TABLE IF EXISTS `innodb_table_stats`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb_table_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(199) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`n_rows` bigint(20) unsigned NOT NULL,
`clustered_index_size` bigint(20) unsigned NOT NULL,
`sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`database_name`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
LOCK TABLES `innodb_table_stats` WRITE;
/*!40000 ALTER TABLE `innodb_table_stats` DISABLE KEYS */;
/*!40000 ALTER TABLE `innodb_table_stats` ENABLE KEYS */;
UNLOCK TABLES;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `general_log` (
`event_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
`user_host` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`command_type` varchar(64) NOT NULL,
`argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `slow_log` (
`start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
`user_host` mediumtext NOT NULL,
`query_time` time(6) NOT NULL,
`lock_time` time(6) NOT NULL,
`rows_sent` int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
`db` varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
`insert_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`sql_text` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`rows_affected` int(11) NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `transaction_registry` (
`transaction_id` bigint(20) unsigned NOT NULL,
`commit_id` bigint(20) unsigned NOT NULL,
`begin_timestamp` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
`commit_timestamp` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
`isolation_level` enum('READ-UNCOMMITTED','READ-COMMITTED','REPEATABLE-READ','SERIALIZABLE') COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`transaction_id`),
UNIQUE KEY `commit_id` (`commit_id`),
KEY `begin_timestamp` (`begin_timestamp`),
KEY `commit_timestamp` (`commit_timestamp`,`transaction_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
#
# With --insert-ignore
#
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
DROP TABLE IF EXISTS `innodb_index_stats`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb_index_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(199) COLLATE utf8_bin NOT NULL,
`index_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
`stat_value` bigint(20) unsigned NOT NULL,
`sample_size` bigint(20) unsigned DEFAULT NULL,
`stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
LOCK TABLES `innodb_index_stats` WRITE;
/*!40000 ALTER TABLE `innodb_index_stats` DISABLE KEYS */;
/*!40000 ALTER TABLE `innodb_index_stats` ENABLE KEYS */;
UNLOCK TABLES;
DROP TABLE IF EXISTS `innodb_table_stats`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `innodb_table_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(199) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
`n_rows` bigint(20) unsigned NOT NULL,
`clustered_index_size` bigint(20) unsigned NOT NULL,
`sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`database_name`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
LOCK TABLES `innodb_table_stats` WRITE;
/*!40000 ALTER TABLE `innodb_table_stats` DISABLE KEYS */;
/*!40000 ALTER TABLE `innodb_table_stats` ENABLE KEYS */;
UNLOCK TABLES;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `general_log` (
`event_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
`user_host` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`command_type` varchar(64) NOT NULL,
`argument` mediumtext NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `slow_log` (
`start_time` timestamp(6) NOT NULL DEFAULT current_timestamp(6) ON UPDATE current_timestamp(6),
`user_host` mediumtext NOT NULL,
`query_time` time(6) NOT NULL,
`lock_time` time(6) NOT NULL,
`rows_sent` int(11) NOT NULL,
`rows_examined` int(11) NOT NULL,
`db` varchar(512) NOT NULL,
`last_insert_id` int(11) NOT NULL,
`insert_id` int(11) NOT NULL,
`server_id` int(10) unsigned NOT NULL,
`sql_text` mediumtext NOT NULL,
`thread_id` bigint(21) unsigned NOT NULL,
`rows_affected` int(11) NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log';
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE IF NOT EXISTS `transaction_registry` (
`transaction_id` bigint(20) unsigned NOT NULL,
`commit_id` bigint(20) unsigned NOT NULL,
`begin_timestamp` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
`commit_timestamp` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
`isolation_level` enum('READ-UNCOMMITTED','READ-COMMITTED','REPEATABLE-READ','SERIALIZABLE') COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`transaction_id`),
UNIQUE KEY `commit_id` (`commit_id`),
KEY `begin_timestamp` (`begin_timestamp`),
KEY `commit_timestamp` (`commit_timestamp`,`transaction_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
# End of 10.2 tests # End of 10.2 tests
# #
# Test for Invisible columns # Test for Invisible columns

View File

@ -19,12 +19,7 @@ let collation=utf8_unicode_ci;
# There are tables in 'mysql' database of type innodb # There are tables in 'mysql' database of type innodb
--source include/have_innodb.inc --source include/have_innodb.inc
# This test is slow on buildbot.
--source include/big_test.inc
disable_query_log;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT"); call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
enable_query_log;
--echo # Bug#37938 Test "mysqldump" lacks various insert statements --echo # Bug#37938 Test "mysqldump" lacks various insert statements
--echo # Turn off concurrent inserts to avoid random errors --echo # Turn off concurrent inserts to avoid random errors
@ -32,15 +27,6 @@ enable_query_log;
SET @OLD_CONCURRENT_INSERT = @@GLOBAL.CONCURRENT_INSERT; SET @OLD_CONCURRENT_INSERT = @@GLOBAL.CONCURRENT_INSERT;
SET @@GLOBAL.CONCURRENT_INSERT = 0; SET @@GLOBAL.CONCURRENT_INSERT = 0;
--disable_warnings
DROP TABLE IF EXISTS t1, `"t"1`, t1aa, t2, t2aa, t3;
drop database if exists mysqldump_test_db;
drop database if exists db1;
drop database if exists db2;
drop view if exists v1, v2, v3;
--enable_warnings
# XML output # XML output
CREATE TABLE t1(a INT, KEY (a)) KEY_BLOCK_SIZE=1024; CREATE TABLE t1(a INT, KEY (a)) KEY_BLOCK_SIZE=1024;
@ -2747,6 +2733,29 @@ INSERT INTO t1 (a) VALUES (1),(2),(3);
--exec $MYSQL_DUMP --default-character-set=utf8mb4 --triggers --no-data --no-create-info --add-drop-trigger --skip-comments --databases test --exec $MYSQL_DUMP --default-character-set=utf8mb4 --triggers --no-data --no-create-info --add-drop-trigger --skip-comments --databases test
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # MDEV-20939: Race condition between mysqldump import and InnoDB
--echo # persistent statistics calculation
--echo #
--let $ignore= --ignore-table=mysql.proxies_priv --ignore-table=mysql.user --ignore-table=mysql.global_priv --ignore-table=mysql.column_stats --ignore-table=mysql.columns_priv --ignore-table=mysql.db --ignore-table=mysql.event --ignore-table=mysql.func --ignore-table=mysql.gtid_slave_pos --ignore-table=mysql.help_category --ignore-table=mysql.help_keyword --ignore-table=mysql.help_relation --ignore-table=mysql.help_topic --ignore-table=mysql.host --ignore-table=mysql.index_stats --ignore-table=mysql.plugin --ignore-table=mysql.proc --ignore-table=mysql.procs_priv --ignore-table=mysql.roles_mapping --ignore-table=mysql.servers --ignore-table=mysql.table_stats --ignore-table=mysql.tables_priv --ignore-table=mysql.time_zone --ignore-table=mysql.time_zone_leap_second --ignore-table=mysql.time_zone_name --ignore-table=mysql.time_zone_transition --ignore-table=mysql.time_zone_transition_type --ignore-table=mysql.general_log --ignore-table=mysql.slow_log
--let $skip_opts= --skip-dump-date --skip-comments
--echo #
--echo # Without --replace and --insert-ignore
--echo #
--exec $MYSQL_DUMP $ignore $skip_opts mysql
--echo #
--echo # With --replace
--echo #
--exec $MYSQL_DUMP $ignore $skip_opts --replace mysql
--echo #
--echo # With --insert-ignore
--echo #
--exec $MYSQL_DUMP $ignore $skip_opts --insert-ignore mysql
--echo # End of 10.2 tests --echo # End of 10.2 tests
--echo # --echo #

View File

@ -0,0 +1,65 @@
#
# MDEV-24208 SHOW RELAYLOG EVENTS command is not supported in the prepared
# statement protocol yet
#
CREATE USER u1;
include/master-slave.inc
[connection master]
connection master;
CREATE TABLE t1(n INT);
DROP TABLE t1;
connection slave;
PREPARE stmt_1 FROM 'SHOW BINLOG EVENTS';
EXECUTE stmt_1;
Log_name Pos Event_type Server_id End_log_pos Info
# # Format_desc # # #
# # Gtid_list # # []
# # Binlog_checkpoint # # #
# # Gtid # # GTID 0-1-1
# # Query # # use `test`; CREATE TABLE t1(n INT)
# # Gtid # # GTID 0-1-2
# # Query # # use `test`; DROP TABLE IF EXISTS `t1` /* generated by server */
# Execute the same prepared statement the second time to check that
# no internal structures used for handling the statement
# 'SHOW BINLOG EVENTS' were damaged.
EXECUTE stmt_1;
Log_name Pos Event_type Server_id End_log_pos Info
# # Format_desc # # #
# # Gtid_list # # []
# # Binlog_checkpoint # # #
# # Gtid # # GTID 0-1-1
# # Query # # use `test`; CREATE TABLE t1(n INT)
# # Gtid # # GTID 0-1-2
# # Query # # use `test`; DROP TABLE IF EXISTS `t1` /* generated by server */
DEALLOCATE PREPARE stmt_1;
connection slave;
PREPARE stmt_1 FROM 'SHOW RELAYLOG EVENTS';
EXECUTE stmt_1;
Log_name Pos Event_type Server_id End_log_pos Info
slave-relay-bin.000001 # Format_desc # # #
slave-relay-bin.000001 # Rotate # # #
# Execute the same prepared statement the second time to check that
# no internal structures used for handling the statement
# 'SHOW RELAYLOG EVENTS' were damaged.
EXECUTE stmt_1;
Log_name Pos Event_type Server_id End_log_pos Info
slave-relay-bin.000001 # Format_desc # # #
slave-relay-bin.000001 # Rotate # # #
DEALLOCATE PREPARE stmt_1;
# Create the user u1 without the REPLICATION SLAVE privilege required
# for running the statements SHOW BINLOG EVENTS/SHOW RELAYLOG EVENTS
# and check that attempt to execute the statements SHOW BINLOG EVENTS/
# SHOW RELAYLOG EVENTS as a prepred statements by a user without required
# privileges results in error.
connect con2,localhost,u1,,test;
PREPARE stmt_1 FROM 'SHOW BINLOG EVENTS';
EXECUTE stmt_1;
ERROR 42000: Access denied; you need (at least one of) the BINLOG MONITOR privilege(s) for this operation
PREPARE stmt_1 FROM 'SHOW RELAYLOG EVENTS';
EXECUTE stmt_1;
ERROR 42000: Access denied; you need (at least one of) the SLAVE MONITOR privilege(s) for this operation
DEALLOCATE PREPARE stmt_1;
include/rpl_end.inc
connection default;
DROP USER u1;
# End of 10.2 tests

View File

@ -0,0 +1,73 @@
--echo #
--echo # MDEV-24208 SHOW RELAYLOG EVENTS command is not supported in the prepared
--echo # statement protocol yet
--echo #
CREATE USER u1;
--source include/have_binlog_format_statement.inc
--source include/master-slave.inc
--connection master
CREATE TABLE t1(n INT);
DROP TABLE t1;
--sync_slave_with_master
PREPARE stmt_1 FROM 'SHOW BINLOG EVENTS';
--replace_column 2 # 4 # 5 #
--replace_regex /Server ver:.*Binlog ver: .*/#/ /slave-bin.*/#/
EXECUTE stmt_1;
--echo # Execute the same prepared statement the second time to check that
--echo # no internal structures used for handling the statement
--echo # 'SHOW BINLOG EVENTS' were damaged.
--replace_column 2 # 4 # 5 #
--replace_regex /Server ver:.*Binlog ver: .*/#/ /slave-bin.*/#/
EXECUTE stmt_1;
DEALLOCATE PREPARE stmt_1;
--connection slave
PREPARE stmt_1 FROM 'SHOW RELAYLOG EVENTS';
--replace_column 2 # 4 # 5 #
--replace_regex /Server ver:.*Binlog ver: .*/#/ /slave-relay-bin.*;pos=.*/#/
EXECUTE stmt_1;
--echo # Execute the same prepared statement the second time to check that
--echo # no internal structures used for handling the statement
--echo # 'SHOW RELAYLOG EVENTS' were damaged.
--replace_column 2 # 4 # 5 #
--replace_regex /Server ver:.*Binlog ver: .*/#/ /slave-relay-bin.*;pos=.*/#/
EXECUTE stmt_1;
DEALLOCATE PREPARE stmt_1;
--echo # Create the user u1 without the REPLICATION SLAVE privilege required
--echo # for running the statements SHOW BINLOG EVENTS/SHOW RELAYLOG EVENTS
--echo # and check that attempt to execute the statements SHOW BINLOG EVENTS/
--echo # SHOW RELAYLOG EVENTS as a prepred statements by a user without required
--echo # privileges results in error.
--connect (con2,localhost,u1,,test)
PREPARE stmt_1 FROM 'SHOW BINLOG EVENTS';
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
EXECUTE stmt_1;
PREPARE stmt_1 FROM 'SHOW RELAYLOG EVENTS';
--error ER_SPECIFIC_ACCESS_DENIED_ERROR
EXECUTE stmt_1;
DEALLOCATE PREPARE stmt_1;
--source include/rpl_end.inc
--connection default
# Clean up
DROP USER u1;
--echo # End of 10.2 tests

View File

@ -3252,6 +3252,23 @@ SELECT * FROM t1 JOIN t2 ON (t2.code = t1.b) WHERE t1.a NOT IN ('baz', 'qux') OR
id a b code num id a b code num
DROP TABLE t1, t2; DROP TABLE t1, t2;
# #
# MDEV-22251: get_key_scans_params: Conditional jump or move depends on uninitialised value
#
create table t1 (pk int, i int, v int, primary key (pk), key(v));
insert into t1 (pk,i,v) values (1,1,2),(2,2,4),(3,3,6),(4,4,8),(5,5,10),(6,6,12),(7,7,14),(8,8,16);
create table t2 (a int, b int);
insert into t2 values (1,2),(2,4);
EXPLAIN
select * from t1 inner join t2 on ( t2.b = t1.v or t2.a = t1.pk);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 2
1 SIMPLE t1 ALL PRIMARY,v NULL NULL NULL 8 Range checked for each record (index map: 0x3)
select * from t1 inner join t2 on ( t2.b = t1.v or t2.a = t1.pk);
pk i v a b
1 1 2 1 2
2 2 4 2 4
drop table t1, t2;
#
# End of 10.2 tests # End of 10.2 tests
# #
# #

View File

@ -2214,6 +2214,20 @@ SELECT * FROM t1 JOIN t2 ON (t2.code = t1.b) WHERE t1.a NOT IN ('baz', 'qux') OR
DROP TABLE t1, t2; DROP TABLE t1, t2;
--echo #
--echo # MDEV-22251: get_key_scans_params: Conditional jump or move depends on uninitialised value
--echo #
create table t1 (pk int, i int, v int, primary key (pk), key(v));
insert into t1 (pk,i,v) values (1,1,2),(2,2,4),(3,3,6),(4,4,8),(5,5,10),(6,6,12),(7,7,14),(8,8,16);
create table t2 (a int, b int);
insert into t2 values (1,2),(2,4);
EXPLAIN
select * from t1 inner join t2 on ( t2.b = t1.v or t2.a = t1.pk);
select * from t1 inner join t2 on ( t2.b = t1.v or t2.a = t1.pk);
drop table t1, t2;
--echo # --echo #
--echo # End of 10.2 tests --echo # End of 10.2 tests
--echo # --echo #

View File

@ -3241,6 +3241,23 @@ SELECT * FROM t1 JOIN t2 ON (t2.code = t1.b) WHERE t1.a NOT IN ('baz', 'qux') OR
id a b code num id a b code num
DROP TABLE t1, t2; DROP TABLE t1, t2;
# #
# MDEV-22251: get_key_scans_params: Conditional jump or move depends on uninitialised value
#
create table t1 (pk int, i int, v int, primary key (pk), key(v));
insert into t1 (pk,i,v) values (1,1,2),(2,2,4),(3,3,6),(4,4,8),(5,5,10),(6,6,12),(7,7,14),(8,8,16);
create table t2 (a int, b int);
insert into t2 values (1,2),(2,4);
EXPLAIN
select * from t1 inner join t2 on ( t2.b = t1.v or t2.a = t1.pk);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 2
1 SIMPLE t1 ALL PRIMARY,v NULL NULL NULL 8 Range checked for each record (index map: 0x3)
select * from t1 inner join t2 on ( t2.b = t1.v or t2.a = t1.pk);
pk i v a b
1 1 2 1 2
2 2 4 2 4
drop table t1, t2;
#
# End of 10.2 tests # End of 10.2 tests
# #
# #

View File

@ -48,10 +48,16 @@ DROP PROCEDURE p3;
DROP FUNCTION f1; DROP FUNCTION f1;
DROP FUNCTION f2; DROP FUNCTION f2;
DROP FUNCTION f3; DROP FUNCTION f3;
#
# Bug #26807 "set global event_scheduler=1" and --skip-grant-tables crashes server
#
set global event_scheduler=1; set global event_scheduler=1;
Warnings: Warnings:
Note 1408 Event Scheduler: Loaded 0 events Note 1408 Event Scheduler: Loaded 0 events
set global event_scheduler=0; set global event_scheduler=0;
#
# Bug#26285 Selecting information_schema crahes server
#
select count(*) from information_schema.COLUMN_PRIVILEGES; select count(*) from information_schema.COLUMN_PRIVILEGES;
count(*) count(*)
0 0
@ -64,14 +70,21 @@ count(*)
select count(*) from information_schema.USER_PRIVILEGES; select count(*) from information_schema.USER_PRIVILEGES;
count(*) count(*)
0 0
End of 5.0 tests #
# End of 5.0 tests
#
# #
# Bug#29817 Queries with UDF fail with non-descriptive error # Bug#29817 Queries with UDF fail with non-descriptive error
# if mysql.proc is missing # if mysql.proc is missing
# #
select no_such_function(1); select no_such_function(1);
ERROR 42000: FUNCTION test.no_such_function does not exist ERROR 42000: FUNCTION test.no_such_function does not exist
End of 5.1 tests #
# End of 5.1 tests
#
#
# MDEV-8280 crash in 'show global status' with --skip-grant-tables
#
show global status like 'Acl%'; show global status like 'Acl%';
Variable_name Value Variable_name Value
Acl_column_grants 0 Acl_column_grants 0
@ -85,6 +98,17 @@ Acl_role_grants 0
Acl_roles 0 Acl_roles 0
Acl_table_grants 0 Acl_table_grants 0
Acl_users 0 Acl_users 0
#
# End of 10.1 tests
#
#
# MDEV-22966 Server crashes or hangs with SET ROLE when started with skip-grant-tables
#
set role x;
ERROR HY000: The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
#
# End of 10.2 tests
#
show create user root@localhost; show create user root@localhost;
ERROR HY000: The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement ERROR HY000: The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
insert mysql.global_priv values ('foo', 'bar', '{}'); insert mysql.global_priv values ('foo', 'bar', '{}');
@ -112,3 +136,6 @@ CREATE USER `baz`@`baz` IDENTIFIED BY PASSWORD '*E52096EF8EB0240275A7FE9E069101C
drop user bar@foo; drop user bar@foo;
drop user baz@baz; drop user baz@baz;
# restart # restart
#
# End of 10.3 tests
#

View File

@ -89,20 +89,23 @@ DROP FUNCTION f1;
DROP FUNCTION f2; DROP FUNCTION f2;
DROP FUNCTION f3; DROP FUNCTION f3;
# --echo #
# Bug #26807 "set global event_scheduler=1" and --skip-grant-tables crashes server --echo # Bug #26807 "set global event_scheduler=1" and --skip-grant-tables crashes server
# --echo #
set global event_scheduler=1; set global event_scheduler=1;
set global event_scheduler=0; set global event_scheduler=0;
# --echo #
# Bug#26285 Selecting information_schema crahes server --echo # Bug#26285 Selecting information_schema crahes server
# --echo #
select count(*) from information_schema.COLUMN_PRIVILEGES; select count(*) from information_schema.COLUMN_PRIVILEGES;
select count(*) from information_schema.SCHEMA_PRIVILEGES; select count(*) from information_schema.SCHEMA_PRIVILEGES;
select count(*) from information_schema.TABLE_PRIVILEGES; select count(*) from information_schema.TABLE_PRIVILEGES;
select count(*) from information_schema.USER_PRIVILEGES; select count(*) from information_schema.USER_PRIVILEGES;
--echo End of 5.0 tests
--echo #
--echo # End of 5.0 tests
--echo #
--echo # --echo #
--echo # Bug#29817 Queries with UDF fail with non-descriptive error --echo # Bug#29817 Queries with UDF fail with non-descriptive error
@ -111,13 +114,30 @@ select count(*) from information_schema.USER_PRIVILEGES;
--error ER_SP_DOES_NOT_EXIST --error ER_SP_DOES_NOT_EXIST
select no_such_function(1); select no_such_function(1);
--echo End of 5.1 tests --echo #
--echo # End of 5.1 tests
--echo #
# --echo #
# MDEV-8280 crash in 'show global status' with --skip-grant-tables --echo # MDEV-8280 crash in 'show global status' with --skip-grant-tables
# --echo #
show global status like 'Acl%'; show global status like 'Acl%';
--echo #
--echo # End of 10.1 tests
--echo #
--echo #
--echo # MDEV-22966 Server crashes or hangs with SET ROLE when started with skip-grant-tables
--echo #
--error ER_OPTION_PREVENTS_STATEMENT
set role x;
--echo #
--echo # End of 10.2 tests
--echo #
# #
# MDEV-18297 # MDEV-18297
# How to reset a forgotten root password # How to reset a forgotten root password
@ -140,3 +160,7 @@ drop user bar@foo;
drop user baz@baz; drop user baz@baz;
# need to restart the server to restore the --skip-grant state # need to restart the server to restore the --skip-grant state
--source include/restart_mysqld.inc --source include/restart_mysqld.inc
--echo #
--echo # End of 10.3 tests
--echo #

View File

@ -100,20 +100,20 @@ RETURNS VARCHAR(64) CHARACTER SET ucs2
BEGIN BEGIN
RETURN 'str'; RETURN 'str';
END| END|
ERROR 42000: COLLATION 'ucs2_unicode_ci' is not valid for CHARACTER SET 'latin1' DROP FUNCTION f|
CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2) CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
RETURNS VARCHAR(64) COLLATE ucs2_unicode_ci RETURNS VARCHAR(64) COLLATE ucs2_unicode_ci
BEGIN BEGIN
RETURN 'str'; RETURN 'str';
END| END|
ERROR 42000: COLLATION 'ucs2_unicode_ci' is not valid for CHARACTER SET 'latin1' DROP FUNCTION f|
CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2) CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
RETURNS VARCHAR(64) CHARACTER SET ucs2 RETURNS VARCHAR(64) CHARACTER SET ucs2
BEGIN BEGIN
DECLARE f2 VARCHAR(64) COLLATE ucs2_unicode_ci; DECLARE f2 VARCHAR(64) COLLATE ucs2_unicode_ci;
RETURN 'str'; RETURN 'str';
END| END|
ERROR 42000: COLLATION 'ucs2_unicode_ci' is not valid for CHARACTER SET 'latin1' DROP FUNCTION f|
SET NAMES utf8; SET NAMES utf8;
CREATE FUNCTION bug48766 () CREATE FUNCTION bug48766 ()
RETURNS ENUM( 'w' ) CHARACTER SET ucs2 RETURNS ENUM( 'w' ) CHARACTER SET ucs2

View File

@ -114,35 +114,35 @@ DROP FUNCTION f1|
# #
# COLLATE with no CHARACTER SET in IN param # COLLATE with no CHARACTER SET in IN param
# #
--error ER_COLLATION_CHARSET_MISMATCH
CREATE FUNCTION f(f1 VARCHAR(64) COLLATE ucs2_unicode_ci) CREATE FUNCTION f(f1 VARCHAR(64) COLLATE ucs2_unicode_ci)
RETURNS VARCHAR(64) CHARACTER SET ucs2 RETURNS VARCHAR(64) CHARACTER SET ucs2
BEGIN BEGIN
RETURN 'str'; RETURN 'str';
END| END|
DROP FUNCTION f|
# #
# COLLATE with no CHARACTER SET in RETURNS # COLLATE with no CHARACTER SET in RETURNS
# #
--error ER_COLLATION_CHARSET_MISMATCH
CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2) CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
RETURNS VARCHAR(64) COLLATE ucs2_unicode_ci RETURNS VARCHAR(64) COLLATE ucs2_unicode_ci
BEGIN BEGIN
RETURN 'str'; RETURN 'str';
END| END|
DROP FUNCTION f|
# #
# COLLATE with no CHARACTER SET in DECLARE # COLLATE with no CHARACTER SET in DECLARE
# #
--error ER_COLLATION_CHARSET_MISMATCH
CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2) CREATE FUNCTION f(f1 VARCHAR(64) CHARACTER SET ucs2)
RETURNS VARCHAR(64) CHARACTER SET ucs2 RETURNS VARCHAR(64) CHARACTER SET ucs2
BEGIN BEGIN
DECLARE f2 VARCHAR(64) COLLATE ucs2_unicode_ci; DECLARE f2 VARCHAR(64) COLLATE ucs2_unicode_ci;
RETURN 'str'; RETURN 'str';
END| END|
DROP FUNCTION f|
delimiter ;| delimiter ;|

View File

@ -829,6 +829,20 @@ length(a)
set names latin1; set names latin1;
set @@use_stat_tables=@save_use_stat_tables; set @@use_stat_tables=@save_use_stat_tables;
drop table t1; drop table t1;
#
# MDEV-23753: SIGSEGV in Column_stat::store_stat_fields
#
CREATE TABLE t1 (a INT, b INT) PARTITION BY HASH (b) PARTITIONS 2;
LOCK TABLES t1 WRITE;
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS (a) INDEXES ();
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS (nonexisting) INDEXES (nonexisting);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze error Invalid argument
DROP TABLE t1;
# please keep this at the last # please keep this at the last
set @@global.histogram_size=@save_histogram_size; set @@global.histogram_size=@save_histogram_size;
# Start of 10.4 tests # Start of 10.4 tests

View File

@ -1,4 +1,5 @@
--source include/have_stat_tables.inc --source include/have_stat_tables.inc
--source include/have_partition.inc
select @@global.use_stat_tables; select @@global.use_stat_tables;
select @@session.use_stat_tables; select @@session.use_stat_tables;
@ -573,6 +574,17 @@ set names latin1;
set @@use_stat_tables=@save_use_stat_tables; set @@use_stat_tables=@save_use_stat_tables;
drop table t1; drop table t1;
--echo #
--echo # MDEV-23753: SIGSEGV in Column_stat::store_stat_fields
--echo #
CREATE TABLE t1 (a INT, b INT) PARTITION BY HASH (b) PARTITIONS 2;
LOCK TABLES t1 WRITE;
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS (a) INDEXES ();
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS (nonexisting) INDEXES (nonexisting);
DROP TABLE t1;
--echo # please keep this at the last --echo # please keep this at the last
set @@global.histogram_size=@save_histogram_size; set @@global.histogram_size=@save_histogram_size;

View File

@ -861,6 +861,20 @@ length(a)
set names latin1; set names latin1;
set @@use_stat_tables=@save_use_stat_tables; set @@use_stat_tables=@save_use_stat_tables;
drop table t1; drop table t1;
#
# MDEV-23753: SIGSEGV in Column_stat::store_stat_fields
#
CREATE TABLE t1 (a INT, b INT) PARTITION BY HASH (b) PARTITIONS 2;
LOCK TABLES t1 WRITE;
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS (a) INDEXES ();
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
ANALYZE TABLE t1 PERSISTENT FOR COLUMNS (nonexisting) INDEXES (nonexisting);
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze error Invalid argument
DROP TABLE t1;
# please keep this at the last # please keep this at the last
set @@global.histogram_size=@save_histogram_size; set @@global.histogram_size=@save_histogram_size;
# Start of 10.4 tests # Start of 10.4 tests

View File

@ -544,7 +544,7 @@ drop table t0,t1,t2,t3,t4,t5,t6;
CREATE TABLE t1 (f1 int(11), PRIMARY KEY (f1)) ; CREATE TABLE t1 (f1 int(11), PRIMARY KEY (f1)) ;
CREATE TABLE t2 (f4 varchar(1024), KEY (f4)) ; CREATE TABLE t2 (f4 varchar(1024), KEY (f4)) ;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
INSERT IGNORE INTO t2 VALUES ('xcddwntkbxyorzdv'), INSERT IGNORE INTO t2 VALUES ('xcddwntkbxyorzdv'),
('cnxxcddwntkbxyor'),('r'),('r'), ('did'),('I'),('when'), ('cnxxcddwntkbxyor'),('r'),('r'), ('did'),('I'),('when'),
('hczkfqjeggivdvac'),('e'),('okay'),('up'); ('hczkfqjeggivdvac'),('e'),('okay'),('up');

View File

@ -2622,6 +2622,62 @@ ERROR HY000: 'ignore' is not allowed in this context
EXECUTE IMMEDIATE 'VALUES (?)' USING DEFAULT; EXECUTE IMMEDIATE 'VALUES (?)' USING DEFAULT;
ERROR HY000: 'default' is not allowed in this context ERROR HY000: 'default' is not allowed in this context
# #
# MDEV-24675: TVC using subqueries
#
values((select 1));
(select 1)
1
values (2), ((select 1));
2
2
1
values ((select 1)), (2), ((select 3));
(select 1)
1
2
3
values ((select 1), 2), (3,4), (5, (select 6));
(select 1) 2
1 2
3 4
5 6
create table t1 (a int, b int);
insert into t1 values (1,3), (2,3), (3,2), (1,2);
values((select max(a) from t1));
(select max(a) from t1)
3
values((select min(b) from t1));
(select min(b) from t1)
2
values ((select max(a) from t1), (select min(b) from t1));
(select max(a) from t1) (select min(b) from t1)
3 2
values((select * from (select max(b) from t1) as t));
(select * from (select max(b) from t1) as t)
3
drop table t1;
#
# MDEV-24618: TVC contains extra parenthesis for row expressions
# in value list
#
create table t1 (a int, b int);
insert into t1 values (1,3), (2,3);
insert into t1 values ((5,4));
ERROR 21000: Operand should contain 1 column(s)
values ((1,2));
ERROR 21000: Operand should contain 1 column(s)
select * from (values ((1,2))) dt;
ERROR 21000: Operand should contain 1 column(s)
values (1,2);
1 2
1 2
values ((select min(a), max(b) from t1));
ERROR 21000: Operand should contain 1 column(s)
drop table t1;
#
# End of 10.3 tests
#
#
# MDEV-22610 Crash in INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT)) # MDEV-22610 Crash in INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT))
# #
VALUES (DEFAULT) UNION VALUES (DEFAULT); VALUES (DEFAULT) UNION VALUES (DEFAULT);
@ -2634,3 +2690,6 @@ ERROR HY000: 'default' is not allowed in this context
INSERT INTO t1 (VALUES (IGNORE) UNION VALUES (IGNORE)); INSERT INTO t1 (VALUES (IGNORE) UNION VALUES (IGNORE));
ERROR HY000: 'ignore' is not allowed in this context ERROR HY000: 'ignore' is not allowed in this context
DROP TABLE t1; DROP TABLE t1;
#
# End of 10.4 tests
#

View File

@ -1354,6 +1354,56 @@ EXECUTE IMMEDIATE 'VALUES (?)' USING IGNORE;
--error ER_NOT_ALLOWED_IN_THIS_CONTEXT --error ER_NOT_ALLOWED_IN_THIS_CONTEXT
EXECUTE IMMEDIATE 'VALUES (?)' USING DEFAULT; EXECUTE IMMEDIATE 'VALUES (?)' USING DEFAULT;
--echo #
--echo # MDEV-24675: TVC using subqueries
--echo #
values((select 1));
values (2), ((select 1));
values ((select 1)), (2), ((select 3));
values ((select 1), 2), (3,4), (5, (select 6));
create table t1 (a int, b int);
insert into t1 values (1,3), (2,3), (3,2), (1,2);
values((select max(a) from t1));
values((select min(b) from t1));
values ((select max(a) from t1), (select min(b) from t1));
values((select * from (select max(b) from t1) as t));
drop table t1;
--echo #
--echo # MDEV-24618: TVC contains extra parenthesis for row expressions
--echo # in value list
--echo #
create table t1 (a int, b int);
insert into t1 values (1,3), (2,3);
--error ER_OPERAND_COLUMNS
insert into t1 values ((5,4));
--error ER_OPERAND_COLUMNS
values ((1,2));
--error ER_OPERAND_COLUMNS
select * from (values ((1,2))) dt;
values (1,2);
--error ER_OPERAND_COLUMNS
values ((select min(a), max(b) from t1));
drop table t1;
--echo #
--echo # End of 10.3 tests
--echo #
--echo # --echo #
--echo # MDEV-22610 Crash in INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT)) --echo # MDEV-22610 Crash in INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT))
@ -1369,3 +1419,7 @@ INSERT INTO t1 (VALUES (DEFAULT) UNION VALUES (DEFAULT));
--error ER_NOT_ALLOWED_IN_THIS_CONTEXT --error ER_NOT_ALLOWED_IN_THIS_CONTEXT
INSERT INTO t1 (VALUES (IGNORE) UNION VALUES (IGNORE)); INSERT INTO t1 (VALUES (IGNORE) UNION VALUES (IGNORE));
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # End of 10.4 tests
--echo #

View File

@ -186,3 +186,30 @@ connection default;
drop user mysqltest_1@localhost; drop user mysqltest_1@localhost;
drop table t1; drop table t1;
set global max_user_connections= @my_max_user_connections; set global max_user_connections= @my_max_user_connections;
#
# End of 10.1 tests
#
#
# MDEV-17852 Altered connection limits for user have no effect
#
create user foo@'%' with max_user_connections 1;
connect con1,localhost,foo;
select current_user();
current_user()
foo@%
connect(localhost,foo,,test,MYSQL_PORT,MYSQL_SOCK);
connect con2,localhost,foo;
ERROR 42000: User 'foo' has exceeded the 'max_user_connections' resource (current value: 1)
connection default;
alter user foo with max_user_connections 2;
connect con3,localhost,foo;
select current_user();
current_user()
foo@%
disconnect con3;
disconnect con1;
connection default;
drop user foo@'%';
#
# End of 10.2 tests
#

View File

@ -216,3 +216,29 @@ drop table t1;
--source include/wait_until_count_sessions.inc --source include/wait_until_count_sessions.inc
set global max_user_connections= @my_max_user_connections; set global max_user_connections= @my_max_user_connections;
--echo #
--echo # End of 10.1 tests
--echo #
--echo #
--echo # MDEV-17852 Altered connection limits for user have no effect
--echo #
create user foo@'%' with max_user_connections 1;
--connect con1,localhost,foo
select current_user();
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
--error ER_USER_LIMIT_REACHED
--connect con2,localhost,foo
--connection default
alter user foo with max_user_connections 2;
--connect con3,localhost,foo
select current_user();
--disconnect con3
--disconnect con1
--connection default
drop user foo@'%';
--echo #
--echo # End of 10.2 tests
--echo #

View File

@ -6761,6 +6761,22 @@ drop database db1;
create database test; create database test;
use test; use test;
# #
# MDEV-16940: update of multi-table view returning error used in SP
#
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1), (2);
CREATE TABLE t2 (b INT) ENGINE=MyISAM;
INSERT INTO t2 VALUES (2), (3);
CREATE VIEW v1 AS SELECT a, b FROM t1,t2;
CREATE PROCEDURE sp1() UPDATE v1 SET a = 8, b = 9;
CALL sp1;
ERROR HY000: Can not modify more than one base table through a join view 'test.v1'
CALL sp1;
ERROR HY000: Can not modify more than one base table through a join view 'test.v1'
DROP PROCEDURE sp1;
DROP VIEW v1;
DROP TABLE t1, t2;
#
# End of 10.2 tests # End of 10.2 tests
# #
# #

View File

@ -6462,6 +6462,28 @@ drop database db1;
create database test; create database test;
use test; use test;
--echo #
--echo # MDEV-16940: update of multi-table view returning error used in SP
--echo #
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1), (2);
CREATE TABLE t2 (b INT) ENGINE=MyISAM;
INSERT INTO t2 VALUES (2), (3);
CREATE VIEW v1 AS SELECT a, b FROM t1,t2;
CREATE PROCEDURE sp1() UPDATE v1 SET a = 8, b = 9;
--error ER_VIEW_MULTIUPDATE
CALL sp1;
--error ER_VIEW_MULTIUPDATE
CALL sp1;
DROP PROCEDURE sp1;
DROP VIEW v1;
DROP TABLE t1, t2;
--echo # --echo #
--echo # End of 10.2 tests --echo # End of 10.2 tests
--echo # --echo #

View File

@ -1168,7 +1168,7 @@ sub command_line_setup {
'rr' => \$opt_rr, 'rr' => \$opt_rr,
'rr-arg=s' => \@rr_record_args, 'rr-arg=s' => \@rr_record_args,
'rr-dir=s' => \$opt_rr_dir, 'rr-dir=s' => \$opt_rr_dir,
'client-gdb' => \$opt_client_gdb, 'client-gdb=s' => \$opt_client_gdb,
'manual-gdb' => \$opt_manual_gdb, 'manual-gdb' => \$opt_manual_gdb,
'manual-lldb' => \$opt_manual_lldb, 'manual-lldb' => \$opt_manual_lldb,
'boot-gdb' => \$opt_boot_gdb, 'boot-gdb' => \$opt_boot_gdb,
@ -1267,7 +1267,7 @@ sub command_line_setup {
); );
# fix options (that take an optional argument and *only* after = sign # fix options (that take an optional argument and *only* after = sign
my %fixopt = ( '--gdb' => '--gdb=#' ); my %fixopt = ( '--gdb' => '--gdb=#', '--client-gdb' => '--client-gdb=#' );
@ARGV = map { $fixopt{$_} or $_ } @ARGV; @ARGV = map { $fixopt{$_} or $_ } @ARGV;
GetOptions(%options) or usage("Can't read options"); GetOptions(%options) or usage("Can't read options");
usage("") if $opt_usage; usage("") if $opt_usage;
@ -5990,7 +5990,11 @@ sub gdb_arguments {
$input = $input ? "< $input" : ""; $input = $input ? "< $input" : "";
if ($type eq 'client') { if ($type eq 'client') {
mtr_tofile($gdb_init_file, "set args @$$args $input"); mtr_tofile($gdb_init_file,
join("\n",
"set args @$$args $input",
split /;/, $opt_client_gdb || ""
));
} elsif ($opt_valgrind_mysqld) { } elsif ($opt_valgrind_mysqld) {
my $v = $$exe; my $v = $$exe;
my $vargs = []; my $vargs = [];

View File

@ -180,12 +180,11 @@ connection default;
# commit checkpoint, otherwise we get nondeterministic results. # commit checkpoint, otherwise we get nondeterministic results.
SET @old_dbug= @@global.DEBUG_DBUG; SET @old_dbug= @@global.DEBUG_DBUG;
SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed"; SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed";
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
SET DEBUG_SYNC= "now SIGNAL con12_cont"; SET DEBUG_SYNC= "now SIGNAL con12_cont";
connection con12; connection con12;
reap; reap;
connection default; connection default;
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
SET GLOBAL debug_dbug= @old_dbug; SET GLOBAL debug_dbug= @old_dbug;
SET DEBUG_SYNC= "now SIGNAL con11_cont"; SET DEBUG_SYNC= "now SIGNAL con11_cont";

View File

@ -148,10 +148,10 @@ connection con10;
connection default; connection default;
SET @old_dbug= @@global.DEBUG_DBUG; SET @old_dbug= @@global.DEBUG_DBUG;
SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed"; SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed";
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
SET DEBUG_SYNC= "now SIGNAL con12_cont"; SET DEBUG_SYNC= "now SIGNAL con12_cont";
connection con12; connection con12;
connection default; connection default;
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
SET GLOBAL debug_dbug= @old_dbug; SET GLOBAL debug_dbug= @old_dbug;
SET DEBUG_SYNC= "now SIGNAL con11_cont"; SET DEBUG_SYNC= "now SIGNAL con11_cont";
connection con11; connection con11;

View File

@ -153,10 +153,10 @@ connection con10;
connection default; connection default;
SET @old_dbug= @@global.DEBUG_DBUG; SET @old_dbug= @@global.DEBUG_DBUG;
SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed"; SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed";
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
SET DEBUG_SYNC= "now SIGNAL con12_cont"; SET DEBUG_SYNC= "now SIGNAL con12_cont";
connection con12; connection con12;
connection default; connection default;
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
SET GLOBAL debug_dbug= @old_dbug; SET GLOBAL debug_dbug= @old_dbug;
SET DEBUG_SYNC= "now SIGNAL con11_cont"; SET DEBUG_SYNC= "now SIGNAL con11_cont";
connection con11; connection con11;

View File

@ -17,7 +17,9 @@ MW-286 : MDEV-18464 Killing thread can cause mutex deadlock if done concurrently
MW-328A : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002 MW-328A : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002
MW-328B : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002 MW-328B : MDEV-22666 galera.MW-328A MTR failed: "Semaphore wait has lasted > 600 seconds" and do not release port 16002
MW-329 : MDEV-19962 Galera test failure on MW-329 MW-329 : MDEV-19962 Galera test failure on MW-329
galera_FK_duplicate_client_insert : MDEV-24473: galera.galera_FK_duplicate_client_insert MTR failed: SIGABRT. InnoDB: Conflicting lock on table. Assertion failure in lock0lock.cc
galera_as_slave_replication_bundle : MDEV-15785 OPTION_GTID_BEGIN is set in Gtid_log_event::do_apply_event() galera_as_slave_replication_bundle : MDEV-15785 OPTION_GTID_BEGIN is set in Gtid_log_event::do_apply_event()
galera_bf_abort_at_after_statement : MDEV-21557: galera_bf_abort_at_after_statement MTR failed: query 'reap' succeeded - should have failed with errno 1213
galera_bf_abort_group_commit : MDEV-18282 Galera test failure on galera.galera_bf_abort_group_commit galera_bf_abort_group_commit : MDEV-18282 Galera test failure on galera.galera_bf_abort_group_commit
galera_binlog_stmt_autoinc : MDEV-19959 Galera test failure on galera_binlog_stmt_autoinc galera_binlog_stmt_autoinc : MDEV-19959 Galera test failure on galera_binlog_stmt_autoinc
galera_encrypt_tmp_files : Get error failed to enable encryption of temporary files galera_encrypt_tmp_files : Get error failed to enable encryption of temporary files
@ -36,12 +38,14 @@ galera_sst_mariabackup_encrypt_with_key : MDEV-21484 galera_sst_mariabackup_encr
galera_toi_ddl_nonconflicting : MDEV-21518 galera.galera_toi_ddl_nonconflicting galera_toi_ddl_nonconflicting : MDEV-21518 galera.galera_toi_ddl_nonconflicting
galera_toi_truncate : MDEV-22996 Hang on galera_toi_truncate test case galera_toi_truncate : MDEV-22996 Hang on galera_toi_truncate test case
galera_trigger : MDEV-24048 galera.galera_trigger MTR fails: Result content mismatch galera_trigger : MDEV-24048 galera.galera_trigger MTR fails: Result content mismatch
galera_var_ignore_apply_errors : MDEV-20451: Lock wait timeout exceeded in galera_var_ignore_apply_errors
galera_var_node_address : MDEV-20485 Galera test failure galera_var_node_address : MDEV-20485 Galera test failure
galera_var_notify_cmd : MDEV-21905 Galera test galera_var_notify_cmd causes hang galera_var_notify_cmd : MDEV-21905 Galera test galera_var_notify_cmd causes hang
galera_var_reject_queries : assertion in inline_mysql_socket_send galera_var_reject_queries : assertion in inline_mysql_socket_send
galera_var_replicate_myisam_on : MDEV-24062 Galera test failure on galera_var_replicate_myisam_on galera_var_replicate_myisam_on : MDEV-24062 Galera test failure on galera_var_replicate_myisam_on
galera_var_retry_autocommit: MDEV-18181 Galera test failure on galera.galera_var_retry_autocommit galera_var_retry_autocommit: MDEV-18181 Galera test failure on galera.galera_var_retry_autocommit
galera_wan : MDEV-17259 Test failure on galera.galera_wan galera_wan : MDEV-17259 Test failure on galera.galera_wan
mysql-wsrep#198 : MDEV-24446: galera.mysql-wsrep#198 MTR failed: query 'reap' failed: 2000: Unknown MySQL error
partition : MDEV-19958 Galera test failure on galera.partition partition : MDEV-19958 Galera test failure on galera.partition
query_cache: MDEV-15805 Test failure on galera.query_cache query_cache: MDEV-15805 Test failure on galera.query_cache
sql_log_bin : MDEV-21491 galera.sql_log_bin sql_log_bin : MDEV-21491 galera.sql_log_bin

View File

@ -0,0 +1,89 @@
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 int, f3 int, unique key keyj (f2));
INSERT INTO t1 VALUES (1, 1, 0);
INSERT INTO t1 VALUES (3, 3, 0);
INSERT INTO t1 VALUES (10, 10, 0);
SET GLOBAL wsrep_slave_threads = 3;
SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
connection node_1;
SET SESSION wsrep_sync_wait=0;
START TRANSACTION;
DELETE FROM t1 WHERE f2 = 3;
INSERT INTO t1 VALUES (3, 3, 1);
connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1;
connection node_1a;
SET SESSION wsrep_sync_wait=0;
connection node_2;
INSERT INTO t1 VALUES (5, 5, 2);
connection node_1a;
SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET GLOBAL wsrep_provider_options = 'dbug=d,apply_monitor_slave_enter_sync';
connection node_2;
INSERT INTO t1 VALUES (4, 4, 2);
connection node_1a;
SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_enter_sync';
connection node_1;
COMMIT;
connection node_1a;
SET SESSION wsrep_on = 0;
SET SESSION wsrep_on = 1;
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_enter_sync';
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL DEBUG_DBUG = "";
SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
SET GLOBAL debug_dbug = NULL;
SET debug_sync='RESET';
SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
SET GLOBAL wsrep_provider_options = 'signal=apply_monitor_slave_enter_sync';
SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
SET GLOBAL wsrep_provider_options = 'dbug=d,commit_monitor_enter_sync';
SET GLOBAL wsrep_provider_options = 'dbug=';
SET GLOBAL DEBUG_DBUG = "";
SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
SET GLOBAL debug_dbug = NULL;
SET debug_sync='RESET';
SET GLOBAL wsrep_provider_options = 'signal=commit_monitor_enter_sync';
SET GLOBAL wsrep_provider_options = 'dbug=';
connection node_1;
SELECT * FROM t1;
f1 f2 f3
1 1 0
3 3 1
4 4 2
5 5 2
10 10 0
wsrep_local_replays
1
SET GLOBAL wsrep_slave_threads = DEFAULT;
connection node_2;
SELECT * FROM t1;
f1 f2 f3
1 1 0
3 3 1
4 4 2
5 5 2
10 10 0
INSERT INTO t1 VALUES (7,7,7);
INSERT INTO t1 VALUES (8,8,8);
SELECT * FROM t1;
f1 f2 f3
1 1 0
3 3 1
4 4 2
5 5 2
7 7 7
8 8 8
10 10 0
connection node_1;
SELECT * FROM t1;
f1 f2 f3
1 1 0
3 3 1
4 4 2
5 5 2
7 7 7
10 10 0
DROP TABLE t1;

View File

@ -4,7 +4,6 @@ connection node_1;
# test phase with cascading foreign key through 3 tables # test phase with cascading foreign key through 3 tables
# #
connection node_1; connection node_1;
set wsrep_sync_wait=0;
CREATE TABLE grandparent ( CREATE TABLE grandparent (
id INT NOT NULL PRIMARY KEY id INT NOT NULL PRIMARY KEY
) ENGINE=InnoDB; ) ENGINE=InnoDB;
@ -26,15 +25,26 @@ INSERT INTO grandparent VALUES (1),(2);
INSERT INTO parent VALUES (1,1), (2,2); INSERT INTO parent VALUES (1,1), (2,2);
INSERT INTO child VALUES (1,1), (2,2); INSERT INTO child VALUES (1,1), (2,2);
connection node_2; connection node_2;
set wsrep_sync_wait=0;
DELETE FROM grandparent WHERE id = 1; DELETE FROM grandparent WHERE id = 1;
SELECT * FROM grandparent;
id
2
SELECT * FROM parent;
id grandparent_id
2 2
SELECT * FROM child;
id parent_id
2 2
connection node_1; connection node_1;
SELECT COUNT(*), COUNT(*) = 0 FROM parent WHERE grandparent_id = 1; SELECT * FROM grandparent;
COUNT(*) COUNT(*) = 0 id
0 1 2
SELECT COUNT(*), COUNT(*) = 0 FROM child WHERE parent_id = 1; SELECT * FROM parent;
COUNT(*) COUNT(*) = 0 id grandparent_id
0 1 2 2
SELECT * FROM child;
id parent_id
2 2
DROP TABLE child; DROP TABLE child;
DROP TABLE parent; DROP TABLE parent;
DROP TABLE grandparent; DROP TABLE grandparent;

View File

@ -20,12 +20,10 @@ INSERT INTO child VALUES (1,'row one'), (2,'row two');
connection node_2; connection node_2;
DELETE FROM parent; DELETE FROM parent;
connection node_1; connection node_1;
SELECT COUNT(*), COUNT(*) = 0 FROM parent; SELECT * FROM parent;
COUNT(*) COUNT(*) = 0 id
0 1 SELECT * FROM child;
SELECT COUNT(*), COUNT(*) = 0 FROM child; id parent_id
COUNT(*) COUNT(*) = 0
0 1
DROP TABLE child; DROP TABLE child;
DROP TABLE parent; DROP TABLE parent;
# #
@ -60,11 +58,9 @@ SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
SET GLOBAL debug_dbug = ""; SET GLOBAL debug_dbug = "";
SET DEBUG_SYNC = "RESET"; SET DEBUG_SYNC = "RESET";
connection node_1; connection node_1;
SELECT COUNT(*), COUNT(*) = 0 FROM parent; SELECT * FROM parent;
COUNT(*) COUNT(*) = 0 id
0 1 SELECT * FROM child;
SELECT COUNT(*), COUNT(*) = 0 FROM child; id j parent_id
COUNT(*) COUNT(*) = 0
0 1
DROP TABLE child; DROP TABLE child;
DROP TABLE parent; DROP TABLE parent;

View File

@ -1,8 +1,5 @@
connection node_2; connection node_2;
connection node_1; connection node_1;
#
# MDEV-10492: Assertion failure on shutdown when wsrep_sst_auth set in config
#
SELECT @@global.wsrep_sst_auth; SELECT @@global.wsrep_sst_auth;
@@global.wsrep_sst_auth @@global.wsrep_sst_auth
******** ********
@ -10,5 +7,14 @@ SET @@global.wsrep_sst_auth='foo:bar';
SELECT @@global.wsrep_sst_auth; SELECT @@global.wsrep_sst_auth;
@@global.wsrep_sst_auth @@global.wsrep_sst_auth
******** ********
disconnect node_2; connection node_2;
disconnect node_1; SET @@global.wsrep_sst_auth= 'abcdefghijklmnopqrstuvwxyz';
SELECT @@global.wsrep_sst_auth;
@@global.wsrep_sst_auth
********
Shutdown node_2
connection node_1;
connection node_2;
SELECT @@global.wsrep_sst_auth;
@@global.wsrep_sst_auth
********

View File

@ -5,32 +5,34 @@ CREATE TABLE t1 (id INT PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (1);
connection node_2; connection node_2;
SET session wsrep_sync_wait=0; SET session wsrep_sync_wait=0;
FLUSH TABLE WITH READ LOCK; FLUSH TABLES WITH READ LOCK;
connection node_1; connection node_1;
ALTER TABLE t1 ADD COLUMN f2 INTEGER; ALTER TABLE t1 ADD COLUMN f2 INTEGER;
INSERT INTO t1 VALUES (2,3); INSERT INTO t1 VALUES (2,3);
connection node_2a; connection node_2a;
SET session wsrep_sync_wait=0; SET session wsrep_sync_wait=0;
# node_1 DDL should not yet be applied
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL, `id` int(11) NOT NULL,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
SET debug_sync='flush_tables_with_read_lock_after_acquire_locks SIGNAL parked2 WAIT_FOR go2';
FLUSH TABLES t1 WITH READ LOCK;; FLUSH TABLES t1 WITH READ LOCK;;
connection node_2; connection node_2;
SET debug_sync='now WAIT_FOR parked2';
SET debug_sync='now SIGNAL go2';
UNLOCK TABLES; UNLOCK TABLES;
# node_1 DDL should not yet be applied 2
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`id` int(11) NOT NULL, `id` int(11) NOT NULL,
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
set debug_sync= 'RESET';
connection node_2a; connection node_2a;
UNLOCK TABLES; UNLOCK TABLES;
# node_1 DDL should be applied 2 SET SESSION wsrep_sync_wait = DEFAULT;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (

View File

@ -0,0 +1,148 @@
#
# This test tests the operation of transaction replay with a scenario
# where two subsequent write sets in applying conflict with local transaction
# in commit phase. The conflict is "false positive" confict on GAP lock in
# secondary unique index.
# The first applier will cause BF abort for the local committer, which
# starts replaying because of positive certification.
# In buggy version, scenatio continues so that ehile the local transaction
# is replaying, the latter applier experiences similar UK GAP lock conflict
# and forces the replayer to abort second time.
# In fixed version, this latter BF abort should not happen.
#
--source include/galera_cluster.inc
--source include/have_innodb.inc
--source include/have_debug_sync.inc
--source include/galera_have_debug_sync.inc
--let $wsrep_local_replays_old = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'`
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY, f2 int, f3 int, unique key keyj (f2));
INSERT INTO t1 VALUES (1, 1, 0);
INSERT INTO t1 VALUES (3, 3, 0);
INSERT INTO t1 VALUES (10, 10, 0);
# we will need 2 appliers threads for applyin two write sets in parallel in node1
# and 1 applier thread for handling replaying
SET GLOBAL wsrep_slave_threads = 3;
SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
--connection node_1
# starting a transaction, which deletes and inserts the middle row in test table
# this will be victim of false positive conflict with appliers
SET SESSION wsrep_sync_wait=0;
START TRANSACTION;
DELETE FROM t1 WHERE f2 = 3;
INSERT INTO t1 VALUES (3, 3, 1);
# Control connection to manage sync points for appliers
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
--connection node_1a
SET SESSION wsrep_sync_wait=0;
# send from node 2 first INSERT transaction, which will conflict on GAP lock in node 1
--connection node_2
INSERT INTO t1 VALUES (5, 5, 2);
--connection node_1a
# wait to see the INSERT in apply_cb sync point
SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
# first applier seen in wait point, set sync point for the second INSERT
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_set_sync_point.inc
--connection node_2
# send second insert into same GAP in test table
INSERT INTO t1 VALUES (4, 4, 2);
--connection node_1a
# wait for the second insert to arrive in his sync point
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_wait_sync_point.inc
--source include/galera_clear_sync_point.inc
# both appliers are now waiting in separate sync points
# Block the local commit, send the COMMIT and wait until it gets blocked
--let $galera_sync_point = commit_monitor_enter_sync
--source include/galera_set_sync_point.inc
--connection node_1
--send COMMIT
--connection node_1a
# wait for the local commit to enter in commit monitor wait state
--let $galera_sync_point = apply_monitor_slave_enter_sync commit_monitor_enter_sync
--source include/galera_wait_sync_point.inc
--source include/galera_clear_sync_point.inc
# release the local transaction to continue with commit
--let $galera_sync_point = commit_monitor_enter_sync
--source include/galera_signal_sync_point.inc
--source include/galera_clear_sync_point.inc
# and now release the first applier, it should force local trx to abort
SET GLOBAL DEBUG_DBUG = "";
SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
SET GLOBAL debug_dbug = NULL;
SET debug_sync='RESET';
# set another sync point for second applier
SET GLOBAL DEBUG_DBUG = "d,sync.wsrep_apply_cb";
# letting the second appier to move forward
--let $galera_sync_point = apply_monitor_slave_enter_sync
--source include/galera_signal_sync_point.inc
# waiting until second applier is in wait
SET SESSION DEBUG_SYNC = "now WAIT_FOR sync.wsrep_apply_cb_reached";
# stopping second applier before commit
--let $galera_sync_point = commit_monitor_enter_sync
--source include/galera_set_sync_point.inc
--source include/galera_clear_sync_point.inc
# releasing the second insert, with buggy version it will conflict with
# replayer
SET GLOBAL DEBUG_DBUG = "";
SET DEBUG_SYNC = "now SIGNAL signal.wsrep_apply_cb";
SET GLOBAL debug_dbug = NULL;
SET debug_sync='RESET';
# with fixed version, second applier has reached commit monitor, and we can
# release it to complete
--let $galera_sync_point = commit_monitor_enter_sync
--source include/galera_signal_sync_point.inc
--source include/galera_clear_sync_point.inc
# local commit should succeed
--connection node_1
--reap
SELECT * FROM t1;
# wsrep_local_replays has increased by 1
--let $wsrep_local_replays_new = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_replays'`
--disable_query_log
--eval SELECT $wsrep_local_replays_new - $wsrep_local_replays_old = 1 AS wsrep_local_replays;
--enable_query_log
# returning original slave thread count
SET GLOBAL wsrep_slave_threads = DEFAULT;
--connection node_2
SELECT * FROM t1;
# replicate some transactions, so that wsrep slave thread count can reach
# original state in node 1
INSERT INTO t1 VALUES (7,7,7);
INSERT INTO t1 VALUES (8,8,8);
SELECT * FROM t1;
--connection node_1
SELECT * FROM t1;
DROP TABLE t1;

View File

@ -84,7 +84,7 @@ SET DEBUG_SYNC = "now SIGNAL continue_kill";
--reap --reap
--connection node_2a --connection node_2a
--error 0,1213 --error 0,1213,2013
select * from t1; select * from t1;
--connection node_2 --connection node_2

View File

@ -9,7 +9,6 @@
--echo # --echo #
--connection node_1 --connection node_1
set wsrep_sync_wait=0;
CREATE TABLE grandparent ( CREATE TABLE grandparent (
id INT NOT NULL PRIMARY KEY id INT NOT NULL PRIMARY KEY
@ -36,8 +35,12 @@ INSERT INTO parent VALUES (1,1), (2,2);
INSERT INTO child VALUES (1,1), (2,2); INSERT INTO child VALUES (1,1), (2,2);
--connection node_2 --connection node_2
set wsrep_sync_wait=0; --let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'grandparent'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'parent'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'child'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 2 FROM child; --let $wait_condition = SELECT COUNT(*) = 2 FROM child;
--source include/wait_condition.inc --source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 2 FROM parent; --let $wait_condition = SELECT COUNT(*) = 2 FROM parent;
@ -46,6 +49,10 @@ set wsrep_sync_wait=0;
--source include/wait_condition.inc --source include/wait_condition.inc
DELETE FROM grandparent WHERE id = 1; DELETE FROM grandparent WHERE id = 1;
SELECT * FROM grandparent;
SELECT * FROM parent;
SELECT * FROM child;
--connection node_1 --connection node_1
--let $wait_condition = SELECT COUNT(*) = 1 FROM child; --let $wait_condition = SELECT COUNT(*) = 1 FROM child;
--source include/wait_condition.inc --source include/wait_condition.inc
@ -53,8 +60,10 @@ DELETE FROM grandparent WHERE id = 1;
--source include/wait_condition.inc --source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 1 FROM grandparent; --let $wait_condition = SELECT COUNT(*) = 1 FROM grandparent;
--source include/wait_condition.inc --source include/wait_condition.inc
SELECT COUNT(*), COUNT(*) = 0 FROM parent WHERE grandparent_id = 1;
SELECT COUNT(*), COUNT(*) = 0 FROM child WHERE parent_id = 1; SELECT * FROM grandparent;
SELECT * FROM parent;
SELECT * FROM child;
DROP TABLE child; DROP TABLE child;
DROP TABLE parent; DROP TABLE parent;

View File

@ -25,16 +25,25 @@ INSERT INTO parent VALUES ('row one'), ('row two');
INSERT INTO child VALUES (1,'row one'), (2,'row two'); INSERT INTO child VALUES (1,'row one'), (2,'row two');
--connection node_2 --connection node_2
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'parent'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'child'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 2 FROM parent;
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 2 FROM child; --let $wait_condition = SELECT COUNT(*) = 2 FROM child;
--source include/wait_condition.inc --source include/wait_condition.inc
DELETE FROM parent; DELETE FROM parent;
--connection node_1 --connection node_1
--let $wait_condition = SELECT COUNT(*) = 0 FROM parent;
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 0 FROM child; --let $wait_condition = SELECT COUNT(*) = 0 FROM child;
--source include/wait_condition.inc --source include/wait_condition.inc
SELECT COUNT(*), COUNT(*) = 0 FROM parent; SELECT * FROM parent;
SELECT COUNT(*), COUNT(*) = 0 FROM child; SELECT * FROM child;
DROP TABLE child; DROP TABLE child;
DROP TABLE parent; DROP TABLE parent;
@ -62,6 +71,12 @@ INSERT INTO parent VALUES (1);
INSERT INTO child VALUES (1,0,1); INSERT INTO child VALUES (1,0,1);
--connection node_2 --connection node_2
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'parent'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'child'
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 1 FROM parent;
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 1 FROM child; --let $wait_condition = SELECT COUNT(*) = 1 FROM child;
--source include/wait_condition.inc --source include/wait_condition.inc
@ -89,11 +104,13 @@ SET DEBUG_SYNC = "RESET";
--connection node_1 --connection node_1
--reap --reap
--let $wait_condition = SELECT COUNT(*) = 0 FROM parent;
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 0 FROM child; --let $wait_condition = SELECT COUNT(*) = 0 FROM child;
--source include/wait_condition.inc --source include/wait_condition.inc
SELECT COUNT(*), COUNT(*) = 0 FROM parent;
SELECT COUNT(*), COUNT(*) = 0 FROM child; SELECT * FROM parent;
SELECT * FROM child;
DROP TABLE child; DROP TABLE child;
DROP TABLE parent; DROP TABLE parent;

View File

@ -32,6 +32,9 @@ CREATE TABLE t2 (f1 VARCHAR(255)) Engine=InnoDB;
INSERT INTO t2 VALUES ('abc'); INSERT INTO t2 VALUES ('abc');
--connection node_1 --connection node_1
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t2';
--source include/wait_condition.inc
TRUNCATE TABLE t2; TRUNCATE TABLE t2;
--connection node_2 --connection node_2

View File

@ -1,12 +1,33 @@
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc --source include/have_innodb.inc
--echo # #
--echo # MDEV-10492: Assertion failure on shutdown when wsrep_sst_auth set in config # MDEV-10492: Assertion failure on shutdown when wsrep_sst_auth set in config
--echo # #
SELECT @@global.wsrep_sst_auth; SELECT @@global.wsrep_sst_auth;
SET @@global.wsrep_sst_auth='foo:bar'; SET @@global.wsrep_sst_auth='foo:bar';
SELECT @@global.wsrep_sst_auth; SELECT @@global.wsrep_sst_auth;
--source include/galera_end.inc #
# MDEV-24509 Warning: Memory not freed: 56 on SET @@global.wsrep_sst_auth
#
--connection node_2
SET @@global.wsrep_sst_auth= 'abcdefghijklmnopqrstuvwxyz';
SELECT @@global.wsrep_sst_auth;
--echo Shutdown node_2
--source include/shutdown_mysqld.inc
# On node_1, verify that the node has left the cluster.
--connection node_1
--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
# Restart node_2
--connection node_2
--source include/start_mysqld.inc
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
--source include/wait_condition.inc
SELECT @@global.wsrep_sst_auth;

View File

@ -5,7 +5,8 @@
# after provider is unpaused # after provider is unpaused
# #
--source include/galera_cluster.inc --source include/galera_cluster.inc
--source include/have_innodb.inc --source include/have_debug.inc
--source include/have_debug_sync.inc
--let $galera_connection_name = node_2a --let $galera_connection_name = node_2a
--let $galera_server_number = 2 --let $galera_server_number = 2
@ -17,7 +18,7 @@ INSERT INTO t1 VALUES (1);
--connection node_2 --connection node_2
SET session wsrep_sync_wait=0; SET session wsrep_sync_wait=0;
FLUSH TABLE WITH READ LOCK; FLUSH TABLES WITH READ LOCK;
--connection node_1 --connection node_1
ALTER TABLE t1 ADD COLUMN f2 INTEGER; ALTER TABLE t1 ADD COLUMN f2 INTEGER;
@ -25,32 +26,33 @@ INSERT INTO t1 VALUES (2,3);
--connection node_2a --connection node_2a
SET session wsrep_sync_wait=0; SET session wsrep_sync_wait=0;
--echo # node_1 DDL should not yet be applied
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
SET debug_sync='flush_tables_with_read_lock_after_acquire_locks SIGNAL parked2 WAIT_FOR go2';
--send FLUSH TABLES t1 WITH READ LOCK; --send FLUSH TABLES t1 WITH READ LOCK;
--connection node_2 --connection node_2
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE USER = 'system user' AND STATE LIKE '%committed%'; SET debug_sync='now WAIT_FOR parked2';
--source include/wait_condition.inc
# let the flush table wait in pause state before we unlock
# table otherwise there is window where-in flush table is
# yet to wait in pause and unlock allows alter table to proceed.
# this is because send is asynchronous.
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST WHERE Info LIKE 'FLUSH TABLES t1 WITH READ LOCK';
--let $wait_condition_on_error_output = SHOW PROCESSLIST
--source include/wait_condition_with_debug.inc
SET debug_sync='now SIGNAL go2';
# this will release existing lock but will not resume
# the cluster as there is new FTRL that is still pausing it.
UNLOCK TABLES; UNLOCK TABLES;
--echo # node_1 DDL should not yet be applied 2
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
set debug_sync= 'RESET';
--connection node_2a --connection node_2a
--reap --reap
UNLOCK TABLES; UNLOCK TABLES;
--let $wait_condition = SELECT COUNT(*) = 2 FROM t1; SET SESSION wsrep_sync_wait = DEFAULT;
--source include/wait_condition.inc
--let $wait_condition = SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 't1';
--source include/wait_condition.inc
--echo # node_1 DDL should be applied 2
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
SELECT * from t1; SELECT * from t1;

View File

@ -10,8 +10,16 @@
# #
############################################################################## ##############################################################################
GAL-501 : MDEV-24645 galera_3nodes.GAL-501 MTR failed: failed to open gcomm backend connection: 110
galera_gtid_2_cluster : MDEV-23775 Galera test failure on galera_3nodes.galera_gtid_2_cluster galera_gtid_2_cluster : MDEV-23775 Galera test failure on galera_3nodes.galera_gtid_2_cluster
galera_ipv6_mariabackup : MDEV-24440: galera_3nodes.galera_ipv6_mariabackup MTR fails sporadically: Failed to read from: wsrep_sst_mariabackup --role 'donor' --address '[::1]:16028/xtrabackup_sst//1'
galera_ipv6_mariabackup_section : MDEV-22195: galera_3nodes.galera_ipv6_mariabackup_section MTR failed: assert_grep.inc failed
galera_ipv6_mysqldump : MDEV-24036: galera_3nodes.galera_ipv6_mysqldump: rare random crashes during shutdown
galera_ipv6_rsync_section : MDEV-23580: galera_3nodes.galera_ipv6_rsync_section MTR failed: WSREP_SST: [ERROR] rsync daemon port '16008' has been taken
galera_ist_gcache_rollover : MDEV-23578 WSREP: exception caused by message: {v=0,t=1,ut=255,o=4,s=0,sr=0,as=1,f=6,src=50524cfe,srcvid=view_id(REG,50524cfe,4),insvid=view_id(UNKNOWN,00000000,0),ru=00000000,r=[-1,-1],fs=75,nl=(} galera_ist_gcache_rollover : MDEV-23578 WSREP: exception caused by message: {v=0,t=1,ut=255,o=4,s=0,sr=0,as=1,f=6,src=50524cfe,srcvid=view_id(REG,50524cfe,4),insvid=view_id(UNKNOWN,00000000,0),ru=00000000,r=[-1,-1],fs=75,nl=(}
galera_slave_options_do :MDEV-8798 galera_load_data_ist : MDEV-24639 galera_3nodes.galera_load_data_ist MTR failed with SIGABRT: query 'reap' failed: 2013: Lost connection to MySQL server during query
galera_load_data_ist : MDEV-24639 galera_3nodes.galera_load_data_ist MTR failed with SIGABRT: query 'reap' failed: 2013: Lost connection to MySQL server during query
galera_pc_bootstrap : MDEV-24650 galera_pc_bootstrap MTR failed: Could not execute 'check-testcase' before testcase
galera_slave_options_do : MDEV-8798
galera_slave_options_ignore : MDEV-8798 galera_slave_options_ignore : MDEV-8798
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

View File

@ -347,11 +347,12 @@ DELETE FROM t1 WHERE c=1;
DROP TABLE t1; DROP TABLE t1;
} }
--error ER_PARSE_ERROR
CREATE TABLE t1 (c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar")); CREATE TABLE t1 (c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar"));
SHOW CREATE TABLE t1;
DROP TABLE t1;
CREATE TABLE t1 (i INT); CREATE TABLE t1 (i INT);
--error ER_PARSE_ERROR
ALTER TABLE t1 ADD COLUMN c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar"); ALTER TABLE t1 ADD COLUMN c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar");
SHOW CREATE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
--error ER_PARSE_ERROR --error ER_PARSE_ERROR
CREATE TABLE t1 (i INT COLLATE utf8_bin, c INT COLLATE utf8_bin GENERATED ALWAYS AS (10)); CREATE TABLE t1 (i INT COLLATE utf8_bin, c INT COLLATE utf8_bin GENERATED ALWAYS AS (10));

View File

@ -430,10 +430,20 @@ INSERT INTO t1(a) VALUES(0);
DELETE FROM t1 WHERE c=1; DELETE FROM t1 WHERE c=1;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar")); CREATE TABLE t1 (c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar"));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'GENERATED ALWAYS AS ("foo bar"))' at line 1 SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c` char(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ('foo bar') VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (i INT); CREATE TABLE t1 (i INT);
ALTER TABLE t1 ADD COLUMN c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar"); ALTER TABLE t1 ADD COLUMN c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar");
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'GENERATED ALWAYS AS ("foo bar")' at line 1 SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) DEFAULT NULL,
`c` char(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ('foo bar') VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (i INT COLLATE utf8_bin, c INT COLLATE utf8_bin GENERATED ALWAYS AS (10)); CREATE TABLE t1 (i INT COLLATE utf8_bin, c INT COLLATE utf8_bin GENERATED ALWAYS AS (10));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'GENERATED ALWAYS AS (10))' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'GENERATED ALWAYS AS (10))' at line 1

View File

@ -430,10 +430,20 @@ INSERT INTO t1(a) VALUES(0);
DELETE FROM t1 WHERE c=1; DELETE FROM t1 WHERE c=1;
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar")); CREATE TABLE t1 (c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar"));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'GENERATED ALWAYS AS ("foo bar"))' at line 1 SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c` char(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ('foo bar') VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (i INT); CREATE TABLE t1 (i INT);
ALTER TABLE t1 ADD COLUMN c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar"); ALTER TABLE t1 ADD COLUMN c CHAR(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ("foo bar");
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'GENERATED ALWAYS AS ("foo bar")' at line 1 SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`i` int(11) DEFAULT NULL,
`c` char(10) CHARACTER SET utf8 COLLATE utf8_bin GENERATED ALWAYS AS ('foo bar') VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (i INT COLLATE utf8_bin, c INT COLLATE utf8_bin GENERATED ALWAYS AS (10)); CREATE TABLE t1 (i INT COLLATE utf8_bin, c INT COLLATE utf8_bin GENERATED ALWAYS AS (10));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'GENERATED ALWAYS AS (10))' at line 1 ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'GENERATED ALWAYS AS (10))' at line 1

View File

@ -793,6 +793,9 @@ DROP TABLE t1;
# #
# MDEV-24041 Generated column DELETE with FOREIGN KEY crash InnoDB # MDEV-24041 Generated column DELETE with FOREIGN KEY crash InnoDB
# #
SET FOREIGN_KEY_CHECKS=1;
CREATE DATABASE `a-b`;
USE `a-b`;
CREATE TABLE emails ( CREATE TABLE emails (
id int, id int,
PRIMARY KEY (id) PRIMARY KEY (id)
@ -802,6 +805,7 @@ id int,
email_id int, email_id int,
date_sent char(4), date_sent char(4),
generated_email_id int as (email_id), generated_email_id int as (email_id),
#generated_sent_date DATE GENERATED ALWAYS AS (date_sent),
PRIMARY KEY (id), PRIMARY KEY (id),
KEY mautic_generated_sent_date_email_id (generated_email_id), KEY mautic_generated_sent_date_email_id (generated_email_id),
FOREIGN KEY (email_id) REFERENCES emails (id) ON DELETE SET NULL FOREIGN KEY (email_id) REFERENCES emails (id) ON DELETE SET NULL
@ -818,3 +822,4 @@ DELETE FROM emails;
DROP TABLE email_stats; DROP TABLE email_stats;
DROP TABLE emails_metadata; DROP TABLE emails_metadata;
DROP TABLE emails; DROP TABLE emails;
DROP DATABASE `a-b`;

View File

@ -653,7 +653,9 @@ DROP TABLE t1;
--echo # --echo #
--echo # MDEV-24041 Generated column DELETE with FOREIGN KEY crash InnoDB --echo # MDEV-24041 Generated column DELETE with FOREIGN KEY crash InnoDB
--echo # --echo #
SET FOREIGN_KEY_CHECKS=1;
CREATE DATABASE `a-b`;
USE `a-b`;
CREATE TABLE emails ( CREATE TABLE emails (
id int, id int,
PRIMARY KEY (id) PRIMARY KEY (id)
@ -664,6 +666,7 @@ CREATE TABLE email_stats (
email_id int, email_id int,
date_sent char(4), date_sent char(4),
generated_email_id int as (email_id), generated_email_id int as (email_id),
#generated_sent_date DATE GENERATED ALWAYS AS (date_sent),
PRIMARY KEY (id), PRIMARY KEY (id),
KEY mautic_generated_sent_date_email_id (generated_email_id), KEY mautic_generated_sent_date_email_id (generated_email_id),
FOREIGN KEY (email_id) REFERENCES emails (id) ON DELETE SET NULL FOREIGN KEY (email_id) REFERENCES emails (id) ON DELETE SET NULL
@ -686,3 +689,4 @@ DELETE FROM emails;
DROP TABLE email_stats; DROP TABLE email_stats;
DROP TABLE emails_metadata; DROP TABLE emails_metadata;
DROP TABLE emails; DROP TABLE emails;
DROP DATABASE `a-b`;

View File

@ -0,0 +1,23 @@
create table t1(f1 char(10), f2 char(10) not null, f3 int not null,
f4 int not null, primary key(f3))engine=innodb;
insert into t1 values('a','a', 1, 1), ('b','b', 2, 2), ('c', 'c', 3, 3), ('d', 'd', 4, 4);
SET DEBUG_SYNC="row_merge_after_scan SIGNAL con1_start WAIT_FOR con1_insert";
SET DEBUG_SYNC="innodb_commit_inplace_alter_table_wait SIGNAL con1_wait WAIT_FOR con1_update";
ALTER TABLE t1 ADD UNIQUE INDEX(f1(3), f4), ADD UNIQUE INDEX(f2), ALGORITHM=INPLACE;
connect con1,localhost,root,,,;
SET DEBUG_SYNC="now WAIT_FOR con1_start";
begin;
INSERT INTO t1 VALUES('e','e',5, 5);
SET DEBUG_SYNC="now SIGNAL con1_insert";
SET DEBUG_SYNC="now WAIT_FOR con1_wait";
SET DEBUG_SYNC="before_row_upd_sec_new_index_entry SIGNAL con1_update WAIT_FOR alter_rollback";
UPDATE t1 set f4 = 10 order by f1 desc limit 2;
connection default;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
SET DEBUG_SYNC="now SIGNAL alter_rollback";
connection con1;
commit;
connection default;
disconnect con1;
DROP TABLE t1;
SET DEBUG_SYNC="RESET";

View File

@ -8,7 +8,7 @@ SELECT @@innodb_file_per_table;
SET SQL_MODE=strict_all_tables; SET SQL_MODE=strict_all_tables;
CREATE TABLE tab0 (c1 VARCHAR(65530), KEY(c1(3073))) ENGINE=InnoDB ROW_FORMAT=COMPRESSED; CREATE TABLE tab0 (c1 VARCHAR(65530), KEY(c1(3073))) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 3072 bytes Note 1071 Specified key was too long; max key length is 3072 bytes
SHOW CREATE TABLE tab0; SHOW CREATE TABLE tab0;
Table Create Table Table Create Table
tab0 CREATE TABLE `tab0` ( tab0 CREATE TABLE `tab0` (

View File

@ -2300,7 +2300,7 @@ drop table t1;
SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
create table t1 (v varchar(65530), key(v)); create table t1 (v varchar(65530), key(v));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 3072 bytes Note 1071 Specified key was too long; max key length is 3072 bytes
drop table t1; drop table t1;
create table t1 (v varchar(65536)); create table t1 (v varchar(65536));
Warnings: Warnings:

View File

@ -0,0 +1 @@
--lock_wait_timeout=2

View File

@ -0,0 +1,32 @@
--source include/have_innodb.inc
--source include/have_debug.inc
create table t1(f1 char(10), f2 char(10) not null, f3 int not null,
f4 int not null, primary key(f3))engine=innodb;
insert into t1 values('a','a', 1, 1), ('b','b', 2, 2), ('c', 'c', 3, 3), ('d', 'd', 4, 4);
SET DEBUG_SYNC="row_merge_after_scan SIGNAL con1_start WAIT_FOR con1_insert";
SET DEBUG_SYNC="innodb_commit_inplace_alter_table_wait SIGNAL con1_wait WAIT_FOR con1_update";
send ALTER TABLE t1 ADD UNIQUE INDEX(f1(3), f4), ADD UNIQUE INDEX(f2), ALGORITHM=INPLACE;
connect(con1,localhost,root,,,);
SET DEBUG_SYNC="now WAIT_FOR con1_start";
begin;
INSERT INTO t1 VALUES('e','e',5, 5);
SET DEBUG_SYNC="now SIGNAL con1_insert";
SET DEBUG_SYNC="now WAIT_FOR con1_wait";
SET DEBUG_SYNC="before_row_upd_sec_new_index_entry SIGNAL con1_update WAIT_FOR alter_rollback";
SEND UPDATE t1 set f4 = 10 order by f1 desc limit 2;
connection default;
--error ER_LOCK_WAIT_TIMEOUT
reap;
SET DEBUG_SYNC="now SIGNAL alter_rollback";
connection con1;
reap;
commit;
connection default;
disconnect con1;
DROP TABLE t1;
SET DEBUG_SYNC="RESET";

View File

@ -178,3 +178,13 @@ Table Op Msg_type Msg_text
test.t1 optimize status OK test.t1 optimize status OK
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL innodb_optimize_fulltext_only= @optimize_fulltext.save; SET GLOBAL innodb_optimize_fulltext_only= @optimize_fulltext.save;
#
# MDEV-24403 Segfault on CREATE TABLE with explicit FTS_DOC_ID_INDEX by multiple fields
#
create table t1 (
f1 int, f2 text,
FTS_DOC_ID bigint unsigned not null,
unique key FTS_DOC_ID_INDEX(FTS_DOC_ID, f1),
fulltext (f2))
engine=innodb;
ERROR 42000: Incorrect index name 'FTS_DOC_ID_INDEX'

View File

@ -106,3 +106,14 @@ SET GLOBAL innodb_optimize_fulltext_only= 1;
OPTIMIZE TABLE t1; OPTIMIZE TABLE t1;
DROP TABLE t1; DROP TABLE t1;
SET GLOBAL innodb_optimize_fulltext_only= @optimize_fulltext.save; SET GLOBAL innodb_optimize_fulltext_only= @optimize_fulltext.save;
--echo #
--echo # MDEV-24403 Segfault on CREATE TABLE with explicit FTS_DOC_ID_INDEX by multiple fields
--echo #
--error ER_WRONG_NAME_FOR_INDEX
create table t1 (
f1 int, f2 text,
FTS_DOC_ID bigint unsigned not null,
unique key FTS_DOC_ID_INDEX(FTS_DOC_ID, f1),
fulltext (f2))
engine=innodb;

View File

@ -325,10 +325,10 @@ ROW_FORMAT=DYNAMIC;
SET sql_mode=''; SET sql_mode='';
create index idx1 on worklog5743(a2); create index idx1 on worklog5743(a2);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 3072 bytes Note 1071 Specified key was too long; max key length is 3072 bytes
create index idx2 on worklog5743(a3); create index idx2 on worklog5743(a3);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 3072 bytes Note 1071 Specified key was too long; max key length is 3072 bytes
create index idx3 on worklog5743(a4); create index idx3 on worklog5743(a4);
show warnings; show warnings;
Level Code Message Level Code Message
@ -337,7 +337,7 @@ create index idx4 on worklog5743(a1, a2);
ERROR 42000: Specified key was too long; max key length is 3072 bytes ERROR 42000: Specified key was too long; max key length is 3072 bytes
show warnings; show warnings;
Level Code Message Level Code Message
Warning 1071 Specified key was too long; max key length is 3072 bytes Note 1071 Specified key was too long; max key length is 3072 bytes
Error 1071 Specified key was too long; max key length is 3072 bytes Error 1071 Specified key was too long; max key length is 3072 bytes
create index idx5 on worklog5743(a1, a5); create index idx5 on worklog5743(a1, a5);
ERROR 42000: Specified key was too long; max key length is 3072 bytes ERROR 42000: Specified key was too long; max key length is 3072 bytes

View File

@ -1224,7 +1224,7 @@ DROP INDEX prefix_idx ON worklog5743;
SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; SET sql_mode = 'NO_ENGINE_SUBSTITUTION';
CREATE INDEX prefix_idx ON worklog5743(col_1_varbinary (4000)); CREATE INDEX prefix_idx ON worklog5743(col_1_varbinary (4000));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 3072 bytes Note 1071 Specified key was too long; max key length is 3072 bytes
SET sql_mode = default; SET sql_mode = default;
INSERT INTO worklog5743 VALUES(REPEAT("a", 4000),REPEAT("o", 4000)); INSERT INTO worklog5743 VALUES(REPEAT("a", 4000),REPEAT("o", 4000));
SELECT col_1_varbinary = REPEAT("a", 4000) FROM worklog5743; SELECT col_1_varbinary = REPEAT("a", 4000) FROM worklog5743;

View File

@ -28,7 +28,7 @@ t1 CREATE TABLE `t1` (
DROP TABLE t1; DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(1200),KEY(a)) ENGINE=Aria CHARACTER SET ucs2; CREATE TABLE t1 (a VARCHAR(1200),KEY(a)) ENGINE=Aria CHARACTER SET ucs2;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
INSERT INTO t1 VALUES (REPEAT('abc ',200)); INSERT INTO t1 VALUES (REPEAT('abc ',200));
CHECK TABLE t1; CHECK TABLE t1;
Table Op Msg_type Msg_text Table Op Msg_type Msg_text

View File

@ -1594,7 +1594,7 @@ a b
drop table t1; drop table t1;
create table t1 (v varchar(65530), key(v)); create table t1 (v varchar(65530), key(v));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
drop table if exists t1; drop table if exists t1;
set statement sql_mode = 'NO_ENGINE_SUBSTITUTION' for set statement sql_mode = 'NO_ENGINE_SUBSTITUTION' for
create table t1 (v varchar(65536)); create table t1 (v varchar(65536));
@ -1866,7 +1866,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a varchar(2048), key `a` (a)); create table t1 (a varchar(2048), key `a` (a));
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -1876,7 +1876,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a varchar(2048), key `a` (a) key_block_size=1024); create table t1 (a varchar(2048), key `a` (a) key_block_size=1024);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -1886,7 +1886,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=1024; create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=1024;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -1953,7 +1953,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=8192; create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=8192;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -1965,7 +1965,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a int not null, b varchar(2048), key (a) key_block_size=1024, key(b)) key_block_size=8192; create table t1 (a int not null, b varchar(2048), key (a) key_block_size=1024, key(b)) key_block_size=8192;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -1995,7 +1995,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000); create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (

View File

@ -17,7 +17,7 @@ t1 CREATE TABLE `t1` (
drop table t1; drop table t1;
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000); create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (

View File

@ -428,7 +428,7 @@ f5 varchar(2048) COLLATE latin1_bin,
KEY (f5) KEY (f5)
) ENGINE=Aria TRANSACTIONAL=0 ; ) ENGINE=Aria TRANSACTIONAL=0 ;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 2000 bytes Note 1071 Specified key was too long; max key length is 2000 bytes
# Fill the table with some data # Fill the table with some data
SELECT alias2.* , alias1.f2 SELECT alias2.* , alias1.f2
FROM FROM

View File

@ -1083,7 +1083,7 @@ Table Create Table
setup_actors CREATE TABLE `setup_actors` ( setup_actors CREATE TABLE `setup_actors` (
`HOST` char(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%', `HOST` char(60) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%',
`USER` char(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%', `USER` char(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%',
`ROLE` char(16) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%', `ROLE` char(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '%',
`ENABLED` enum('YES','NO') NOT NULL DEFAULT 'YES', `ENABLED` enum('YES','NO') NOT NULL DEFAULT 'YES',
`HISTORY` enum('YES','NO') NOT NULL DEFAULT 'YES' `HISTORY` enum('YES','NO') NOT NULL DEFAULT 'YES'
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8 ) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8

View File

@ -900,7 +900,7 @@ def performance_schema session_status VARIABLE_NAME 1 NULL NO varchar 64 192 NUL
def performance_schema session_status VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL NULL utf8 utf8_general_ci varchar(1024) select,insert,update,references NEVER NULL def performance_schema session_status VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL NULL utf8 utf8_general_ci varchar(1024) select,insert,update,references NEVER NULL
def performance_schema setup_actors HOST 1 '%' NO char 60 180 NULL NULL NULL utf8 utf8_bin char(60) select,insert,update,references NEVER NULL def performance_schema setup_actors HOST 1 '%' NO char 60 180 NULL NULL NULL utf8 utf8_bin char(60) select,insert,update,references NEVER NULL
def performance_schema setup_actors USER 2 '%' NO char 128 384 NULL NULL NULL utf8 utf8_bin char(128) select,insert,update,references NEVER NULL def performance_schema setup_actors USER 2 '%' NO char 128 384 NULL NULL NULL utf8 utf8_bin char(128) select,insert,update,references NEVER NULL
def performance_schema setup_actors ROLE 3 '%' NO char 16 48 NULL NULL NULL utf8 utf8_bin char(16) select,insert,update,references NEVER NULL def performance_schema setup_actors ROLE 3 '%' NO char 128 384 NULL NULL NULL utf8 utf8_bin char(128) select,insert,update,references NEVER NULL
def performance_schema setup_actors ENABLED 4 'YES' NO enum 3 9 NULL NULL NULL utf8 utf8_general_ci enum('YES','NO') select,insert,update,references NEVER NULL def performance_schema setup_actors ENABLED 4 'YES' NO enum 3 9 NULL NULL NULL utf8 utf8_general_ci enum('YES','NO') select,insert,update,references NEVER NULL
def performance_schema setup_actors HISTORY 5 'YES' NO enum 3 9 NULL NULL NULL utf8 utf8_general_ci enum('YES','NO') select,insert,update,references NEVER NULL def performance_schema setup_actors HISTORY 5 'YES' NO enum 3 9 NULL NULL NULL utf8 utf8_general_ci enum('YES','NO') select,insert,update,references NEVER NULL
def performance_schema setup_consumers NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references NEVER NULL def performance_schema setup_consumers NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references NEVER NULL

View File

@ -17,6 +17,16 @@ processlist_info NULL
unified_parent_thread_id NULL unified_parent_thread_id NULL
role NULL role NULL
instrumented YES instrumented YES
name thread/sql/manager
type BACKGROUND
processlist_user NULL
processlist_host NULL
processlist_db NULL
processlist_command NULL
processlist_info NULL
unified_parent_thread_id unified parent_thread_id
role NULL
instrumented YES
name thread/sql/one_connection name thread/sql/one_connection
type FOREGROUND type FOREGROUND
processlist_user root processlist_user root
@ -44,16 +54,6 @@ processlist_info NULL
unified_parent_thread_id unified parent_thread_id unified_parent_thread_id unified parent_thread_id
role NULL role NULL
instrumented YES instrumented YES
name thread/sql/slave_background
type BACKGROUND
processlist_user NULL
processlist_host NULL
processlist_db NULL
processlist_command NULL
processlist_info NULL
unified_parent_thread_id unified parent_thread_id
role NULL
instrumented YES
CREATE TEMPORARY TABLE t1 AS CREATE TEMPORARY TABLE t1 AS
SELECT thread_id FROM performance_schema.threads SELECT thread_id FROM performance_schema.threads
WHERE name LIKE 'thread/sql%'; WHERE name LIKE 'thread/sql%';
@ -113,7 +113,7 @@ WHERE t1.name LIKE 'thread/sql%'
ORDER BY parent_thread_name, child_thread_name; ORDER BY parent_thread_name, child_thread_name;
parent_thread_name child_thread_name parent_thread_name child_thread_name
thread/sql/event_scheduler thread/sql/event_worker thread/sql/event_scheduler thread/sql/event_worker
thread/sql/main thread/sql/manager
thread/sql/main thread/sql/one_connection thread/sql/main thread/sql/one_connection
thread/sql/main thread/sql/signal_handler thread/sql/main thread/sql/signal_handler
thread/sql/main thread/sql/slave_background
thread/sql/one_connection thread/sql/event_scheduler thread/sql/one_connection thread/sql/event_scheduler

View File

@ -10,8 +10,7 @@
# #
############################################################################## ##############################################################################
rpl_spec_variables : BUG#11755836 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux #rpl_get_master_version_and_clock : Bug#11766137 Jan 05 2011 joro Valgrind warnings
#rpl_get_master_version_and_clock : Bug#11766137 Jan 05 2011 joro Valgrind warnings rpl_get_master_version_and_clock
rpl_partition_archive : MDEV-5077 2013-09-27 svoj Cannot exchange partition with archive table rpl_partition_archive : MDEV-5077 2013-09-27 svoj Cannot exchange partition with archive table
rpl_row_binlog_max_cache_size : MDEV-11092 rpl_row_binlog_max_cache_size : MDEV-11092
rpl_row_index_choice : MDEV-11666 rpl_row_index_choice : MDEV-11666

View File

@ -49,14 +49,14 @@ connection master;
--echo *** Single statement on transactional table *** --echo *** Single statement on transactional table ***
--disable_query_log --disable_query_log
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE --error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE, 1534
eval INSERT INTO t1 (a, data) VALUES (1, eval INSERT INTO t1 (a, data) VALUES (1,
CONCAT($data, $data, $data, $data, $data)); CONCAT($data, $data, $data, $data, $data));
--enable_query_log --enable_query_log
--echo *** Single statement on non-transactional table *** --echo *** Single statement on non-transactional table ***
--disable_query_log --disable_query_log
--error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE --error ER_TRANS_CACHE_FULL, ER_STMT_CACHE_FULL, ER_ERROR_ON_WRITE, 1534
eval INSERT INTO t2 (a, data) VALUES (2, eval INSERT INTO t2 (a, data) VALUES (2,
CONCAT($data, $data, $data, $data, $data, $data)); CONCAT($data, $data, $data, $data, $data, $data));
--enable_query_log --enable_query_log

View File

@ -0,0 +1,37 @@
include/rpl_init.inc [topology=1->2]
connection server_2;
include/stop_slave.inc
RESET SLAVE;
include/start_slave.inc
include/stop_slave.inc
#
# Stop slave server
#
#
# Simulate file number get close to 999997
# by renaming relay logs and modifying index/info files
#
# Restart slave server
#
SET @save_slave_parallel_threads= @@GLOBAL.slave_parallel_threads;
SET @save_max_relay_log_size= @@GLOBAL.max_relay_log_size;
SET GLOBAL slave_parallel_threads=1;
SET GLOBAL max_relay_log_size=100 * 1024;
include/start_slave.inc
connection server_1;
create table t1 (i int, c varchar(1024));
#
# Insert some data to generate enough amount of binary logs
#
connection server_2;
#
# Assert that 'slave-relay-bin.999999' is purged.
#
NOT FOUND /slave-relay-bin.999999/ in slave-relay-bin.index
include/stop_slave.inc
SET GLOBAL slave_parallel_threads= @save_slave_parallel_threads;
SET GLOBAL max_relay_log_size= @save_max_relay_log_size;
include/start_slave.inc
connection server_1;
DROP TABLE t1;
include/rpl_end.inc

View File

@ -3,7 +3,7 @@ include/master-slave.inc
SET SQL_LOG_BIN=0; SET SQL_LOG_BIN=0;
CREATE TABLE t1 (c1 char(255) DEFAULT NULL, KEY c1 (c1)) DEFAULT CHARSET=utf32; CREATE TABLE t1 (c1 char(255) DEFAULT NULL, KEY c1 (c1)) DEFAULT CHARSET=utf32;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
SET SQL_LOG_BIN=1; SET SQL_LOG_BIN=1;
connection slave; connection slave;
SET @saved_slave_type_conversions= @@global.slave_type_conversions; SET @saved_slave_type_conversions= @@global.slave_type_conversions;
@ -13,7 +13,7 @@ include/start_slave.inc
SET SQL_LOG_BIN=0; SET SQL_LOG_BIN=0;
CREATE TABLE t1 ( c1 varchar(255) DEFAULT NULL, KEY c1 (c1)) DEFAULT CHARSET=utf32; CREATE TABLE t1 ( c1 varchar(255) DEFAULT NULL, KEY c1 (c1)) DEFAULT CHARSET=utf32;
Warnings: Warnings:
Warning 1071 Specified key was too long; max key length is 1000 bytes Note 1071 Specified key was too long; max key length is 1000 bytes
SET SQL_LOG_BIN=1; SET SQL_LOG_BIN=1;
connection master; connection master;
INSERT INTO t1(c1) VALUES ('insert into t1'); INSERT INTO t1(c1) VALUES ('insert into t1');

View File

@ -2,14 +2,17 @@ include/master-slave.inc
[connection master] [connection master]
* auto_increment_increment, auto_increment_offset * * auto_increment_increment, auto_increment_offset *
connection master;
SET @@global.auto_increment_increment=2; SET @@global.auto_increment_increment=2;
SET @@session.auto_increment_increment=2; SET @@session.auto_increment_increment=2;
SET @@global.auto_increment_offset=10; SET @@global.auto_increment_offset=10;
SET @@session.auto_increment_offset=10; SET @@session.auto_increment_offset=10;
connection slave;
SET @@global.auto_increment_increment=3; SET @@global.auto_increment_increment=3;
SET @@session.auto_increment_increment=3; SET @@session.auto_increment_increment=3;
SET @@global.auto_increment_offset=20; SET @@global.auto_increment_offset=20;
SET @@session.auto_increment_offset=20; SET @@session.auto_increment_offset=20;
connection master;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM; CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
INSERT INTO t1 (b) VALUES ('master'); INSERT INTO t1 (b) VALUES ('master');
INSERT INTO t1 (b) VALUES ('master'); INSERT INTO t1 (b) VALUES ('master');
@ -17,6 +20,7 @@ SELECT * FROM t1 ORDER BY a;
a b a b
2 master 2 master
4 master 4 master
connection slave;
CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM; CREATE TABLE t2 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
INSERT INTO t1 (b) VALUES ('slave'); INSERT INTO t1 (b) VALUES ('slave');
INSERT INTO t1 (b) VALUES ('slave'); INSERT INTO t1 (b) VALUES ('slave');
@ -32,102 +36,123 @@ SELECT * FROM t2 ORDER BY a;
a b a b
1 slave 1 slave
4 slave 4 slave
connection master;
DROP TABLE IF EXISTS t1,t2; DROP TABLE IF EXISTS t1,t2;
SET @@global.auto_increment_increment=1; SET @@global.auto_increment_increment=1;
SET @@session.auto_increment_increment=1; SET @@session.auto_increment_increment=1;
SET @@global.auto_increment_offset=1; SET @@global.auto_increment_offset=1;
SET @@session.auto_increment_offset=1; SET @@session.auto_increment_offset=1;
connection slave;
SET @@global.auto_increment_increment=1; SET @@global.auto_increment_increment=1;
SET @@session.auto_increment_increment=1; SET @@session.auto_increment_increment=1;
SET @@global.auto_increment_offset=1; SET @@global.auto_increment_offset=1;
SET @@session.auto_increment_offset=1; SET @@session.auto_increment_offset=1;
connection slave;
SET auto_increment_increment=1; SET auto_increment_increment=1;
SET auto_increment_offset=1; SET auto_increment_offset=1;
* character_set_database, collation_server * * character_set_database, collation_server *
connection master;
SET @restore_master_character_set_database=@@global.character_set_database; SET @restore_master_character_set_database=@@global.character_set_database;
SET @restore_master_collation_server=@@global.collation_server; SET @restore_master_collation_server=@@global.collation_server;
SET @@global.character_set_database=latin1; SET @@global.character_set_database=latin1;
SET @@session.character_set_database=latin1; SET @@session.character_set_database=latin1;
SET @@global.collation_server=latin1_german1_ci; SET @@global.collation_server=latin1_german1_ci;
SET @@session.collation_server=latin1_german1_ci; SET @@session.collation_server=latin1_german1_ci;
connection slave;
SET @restore_slave_character_set_database=@@global.character_set_database; SET @restore_slave_character_set_database=@@global.character_set_database;
SET @restore_slave_collation_server=@@global.collation_server; SET @restore_slave_collation_server=@@global.collation_server;
SET @@global.character_set_database=utf8; SET @@global.character_set_database=utf8;
SET @@session.character_set_database=utf8; SET @@session.character_set_database=utf8;
SET @@global.collation_server=utf8_bin; SET @@global.collation_server=utf8_bin;
SET @@session.collation_server=utf8_bin; SET @@session.collation_server=utf8_bin;
connection master;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM; CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL, `a` int(11) NOT NULL,
`b` varchar(10) COLLATE latin1_german1_ci DEFAULT NULL, `b` varchar(10) DEFAULT NULL,
PRIMARY KEY (`a`) PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci ) ENGINE=MyISAM DEFAULT CHARSET=latin1
connection slave;
CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM; CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=MyISAM;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL, `a` int(11) NOT NULL,
`b` varchar(10) COLLATE latin1_german1_ci DEFAULT NULL, `b` varchar(10) DEFAULT NULL,
PRIMARY KEY (`a`) PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci ) ENGINE=MyISAM DEFAULT CHARSET=latin1
SHOW CREATE TABLE t2; SHOW CREATE TABLE t2;
Table Create Table Table Create Table
t2 CREATE TABLE `t2` ( t2 CREATE TABLE `t2` (
`a` int(11) NOT NULL, `a` int(11) NOT NULL,
`b` varchar(10) COLLATE utf8_bin DEFAULT NULL, `b` varchar(10) DEFAULT NULL,
PRIMARY KEY (`a`) PRIMARY KEY (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ) ENGINE=MyISAM DEFAULT CHARSET=latin1
SET @@global.collation_server=latin1_swedish_ci; SET @@global.collation_server=latin1_swedish_ci;
SET @@session.collation_server=latin1_swedish_ci; SET @@session.collation_server=latin1_swedish_ci;
connection master;
SET @@global.collation_server=latin1_swedish_ci; SET @@global.collation_server=latin1_swedish_ci;
SET @@session.collation_server=latin1_swedish_ci; SET @@session.collation_server=latin1_swedish_ci;
DROP TABLE IF EXISTS t1,t2; DROP TABLE IF EXISTS t1,t2;
* default_week_format * * default_week_format *
connection master;
SET @@global.default_week_format=0; SET @@global.default_week_format=0;
SET @@session.default_week_format=0; SET @@session.default_week_format=0;
connection slave;
SET @@global.default_week_format=1; SET @@global.default_week_format=1;
SET @@session.default_week_format=1; SET @@session.default_week_format=1;
connection master;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c INT) ENGINE=MyISAM; CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c INT) ENGINE=MyISAM;
INSERT INTO t1 VALUES (1, 'master ', WEEK('2008-01-07')); INSERT INTO t1 VALUES (1, 'master ', WEEK('2008-01-07'));
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
a b c a b c
1 master 1 1 master 1
connection slave;
INSERT INTO t1 VALUES (2, 'slave ', WEEK('2008-01-07')); INSERT INTO t1 VALUES (2, 'slave ', WEEK('2008-01-07'));
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
a b c a b c
1 master 1 1 master 1
2 slave 2 2 slave 2
connection master;
DROP TABLE t1; DROP TABLE t1;
connection slave;
SET @@global.default_week_format=0; SET @@global.default_week_format=0;
SET @@session.default_week_format=0; SET @@session.default_week_format=0;
* local_infile * * local_infile *
connection slave;
SET @@global.local_infile=0; SET @@global.local_infile=0;
connection master;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(20), c CHAR(254)) ENGINE=MyISAM; CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(20), c CHAR(254)) ENGINE=MyISAM;
LOAD DATA LOCAL INFILE 'FILE' INTO TABLE t1 (b); LOAD DATA LOCAL INFILE 'FILE' INTO TABLE t1 (b);
SELECT COUNT(*) FROM t1; SELECT COUNT(*) FROM t1;
COUNT(*) COUNT(*)
70 70
connection slave;
LOAD DATA LOCAL INFILE 'FILE2' INTO TABLE t1 (b); LOAD DATA LOCAL INFILE 'FILE2' INTO TABLE t1 (b);
ERROR 42000: The used command is not allowed with this MySQL version ERROR HY000: The used command is not allowed because the MariaDB server or client has disabled the local infile capability
SELECT COUNT(*) FROM t1; SELECT COUNT(*) FROM t1;
COUNT(*) COUNT(*)
70 70
SET @@global.local_infile=1; SET @@global.local_infile=1;
connection master;
DROP TABLE t1; DROP TABLE t1;
* max_heap_table_size * * max_heap_table_size *
connection slave;
SET @restore_slave_max_heap_table_size=@@global.max_heap_table_size; SET @restore_slave_max_heap_table_size=@@global.max_heap_table_size;
SET @@global.max_heap_table_size=16384; SET @@global.max_heap_table_size=16384;
SET @@session.max_heap_table_size=16384; SET @@session.max_heap_table_size=16384;
connection master;
CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), c CHAR(254)) ENGINE=MEMORY; CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b VARCHAR(10), c CHAR(254)) ENGINE=MEMORY;
SELECT COUNT(*)=2000 FROM t1; SELECT COUNT(*)=2000 FROM t1;
COUNT(*)=2000 COUNT(*)=2000
1 1
connection slave;
SELECT COUNT(*)=2000 FROM t1 WHERE b='master' GROUP BY b ORDER BY b; SELECT COUNT(*)=2000 FROM t1 WHERE b='master' GROUP BY b ORDER BY b;
COUNT(*)=2000 COUNT(*)=2000
1 1
@ -137,18 +162,24 @@ COUNT(*)<2000 AND COUNT(*)>0
SELECT COUNT(*)<2000 AND COUNT(*)>0 FROM t2 WHERE b='slave' GROUP BY b ORDER BY b; SELECT COUNT(*)<2000 AND COUNT(*)>0 FROM t2 WHERE b='slave' GROUP BY b ORDER BY b;
COUNT(*)<2000 AND COUNT(*)>0 COUNT(*)<2000 AND COUNT(*)>0
1 1
connection master;
DROP TABLE IF EXISTS t1,t2; DROP TABLE IF EXISTS t1,t2;
* storage_engine * * storage_engine *
connection master;
SET @restore_master_storage_engine=@@global.default_storage_engine; SET @restore_master_storage_engine=@@global.default_storage_engine;
SET @@global.default_storage_engine=InnoDB; SET @@global.default_storage_engine=InnoDB;
SET @@session.default_storage_engine=InnoDB; SET @@session.default_storage_engine=InnoDB;
connection slave;
SET @restore_slave_storage_engine=@@global.default_storage_engine; SET @restore_slave_storage_engine=@@global.default_storage_engine;
SET @@global.default_storage_engine=Memory; SET @@global.default_storage_engine=Memory;
SET @@session.default_storage_engine=Memory; SET @@session.default_storage_engine=Memory;
connection master;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)); CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10));
CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB; CREATE TABLE t2 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)) ENGINE=InnoDB;
connection slave;
CREATE TABLE t3 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10)); CREATE TABLE t3 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10));
connection master;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -163,6 +194,7 @@ t2 CREATE TABLE `t2` (
`b` varchar(10) DEFAULT NULL, `b` varchar(10) DEFAULT NULL,
PRIMARY KEY (`a`) PRIMARY KEY (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ) ENGINE=InnoDB DEFAULT CHARSET=latin1
connection slave;
SHOW CREATE TABLE t1; SHOW CREATE TABLE t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
@ -186,37 +218,49 @@ t3 CREATE TABLE `t3` (
) ENGINE=MEMORY DEFAULT CHARSET=latin1 ) ENGINE=MEMORY DEFAULT CHARSET=latin1
SET @@global.default_storage_engine=InnoDB; SET @@global.default_storage_engine=InnoDB;
SET @@session.default_storage_engine=InnoDB; SET @@session.default_storage_engine=InnoDB;
connection master;
DROP TABLE IF EXISTS t1,t2,t3; DROP TABLE IF EXISTS t1,t2,t3;
* sql_mode * * sql_mode *
connection master;
SET @old_sql_mode_master= @@global.sql_mode;
SET @@global.sql_mode=ANSI; SET @@global.sql_mode=ANSI;
SET @@session.sql_mode=ANSI; SET @@session.sql_mode=ANSI;
connection slave;
SET @old_sql_mode_slave= @@global.sql_mode;
SET @@global.sql_mode=TRADITIONAL; SET @@global.sql_mode=TRADITIONAL;
SET @@session.sql_mode=TRADITIONAL; SET @@session.sql_mode=TRADITIONAL;
connection master;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c DATE); CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b VARCHAR(10), c DATE);
INSERT INTO t1 VALUES (1, 'master', '0000-00-00'); INSERT INTO t1 VALUES (1, 'master', '0000-00-00');
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
a b c a b c
1 master 0000-00-00 1 master 0000-00-00
connection slave;
INSERT INTO t1 VALUES (1, 'slave', '0000-00-00'); INSERT INTO t1 VALUES (1, 'slave', '0000-00-00');
ERROR 22007: Incorrect date value: '0000-00-00' for column 'c' at row 1 ERROR 22007: Incorrect date value: '0000-00-00' for column `test`.`t1`.`c` at row 1
SELECT * FROM t1 ORDER BY a; SELECT * FROM t1 ORDER BY a;
a b c a b c
1 master 0000-00-00 1 master 0000-00-00
SET @@global.sql_mode=''; SET @@global.sql_mode='';
SET @@session.sql_mode=''; SET @@session.sql_mode='';
connection master;
SET @@global.sql_mode=''; SET @@global.sql_mode='';
SET @@session.sql_mode=''; SET @@session.sql_mode='';
DROP TABLE t1; DROP TABLE t1;
*** clean up *** *** clean up ***
connection master;
SET @@global.character_set_database=@restore_master_character_set_database; SET @@global.character_set_database=@restore_master_character_set_database;
SET @@global.collation_server=@restore_master_collation_server; SET @@global.collation_server=@restore_master_collation_server;
SET @@global.default_storage_engine=@restore_master_storage_engine; SET @@global.default_storage_engine=@restore_master_storage_engine;
SET @@global.sql_mode=@old_sql_mode_master;
connection slave;
SET @@global.character_set_database=@restore_slave_character_set_database; SET @@global.character_set_database=@restore_slave_character_set_database;
SET @@global.collation_server=@restore_slave_collation_server; SET @@global.collation_server=@restore_slave_collation_server;
SET @@global.max_heap_table_size=@restore_slave_max_heap_table_size; SET @@global.max_heap_table_size=@restore_slave_max_heap_table_size;
SET @@global.default_storage_engine=@restore_slave_storage_engine; SET @@global.default_storage_engine=@restore_slave_storage_engine;
SET @@global.sql_mode=@old_sql_mode_slave;
call mtr.add_suppression("The table 't[12]' is full"); call mtr.add_suppression("The table 't[12]' is full");
include/rpl_end.inc include/rpl_end.inc

View File

@ -5,24 +5,27 @@ set default_storage_engine=example;
connection slave; connection slave;
connection master; connection master;
create table t1 (a int not null) ull=12340; create table t1 (a int not null) ull=12340;
alter table t1 ull=12350;
Warnings:
Note 1105 EXAMPLE DEBUG: ULL 12340 -> 12350
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL `a` int(11) NOT NULL
) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `ull`=12340 ) ENGINE=EXAMPLE DEFAULT CHARSET=latin1 `ull`=12350
connection slave; connection slave;
connection slave; connection slave;
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL `a` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /* `ull`=12340 */ ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /* `ull`=12350 */
set sql_mode=ignore_bad_table_options; set sql_mode=ignore_bad_table_options;
show create table t1; show create table t1;
Table Create Table Table Create Table
t1 CREATE TABLE `t1` ( t1 CREATE TABLE `t1` (
`a` int(11) NOT NULL `a` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 `ull`=12340 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 `ull`=12350
connection master; connection master;
drop table t1; drop table t1;
set default_storage_engine=default; set default_storage_engine=default;

View File

@ -0,0 +1,109 @@
# ==== Purpose ====
#
# Test verifies that auto purging mechanism of relay logs works fine when the
# file extension grows beyond 999999.
#
# ==== Implementation ====
#
# Steps:
# 0 - In master-slave setup clear all the relay logs on the slave server.
# 1 - Start the slave so that new relay logs starting from
# 'slave-relay-bin.000001' are created.
# 2 - Get the active relay-log file name by using SHOW SLAVE STATUS.
# Shutdown the slave server.
# 3 - Rename active relay log to '999997' in both 'relay-log.info' and
# 'slave-relay-bin.index' files.
# 4 - Restart the slave server by configuring 'slave_parallel_threads=1'
# and 'max_relay_log_size=100K'.
# 5 - Generate load on master such that few relay logs are generated on
# slave. The relay log sequence number will change to 7 digits.
# 6 - Sync slave with master to ensure that relay logs are applied on
# slave. They should have been automatically purged.
# 7 - Assert that there is no 'slave-relay-bin.999999' file in
# 'relay-log.info'.
#
# ==== References ====
#
# MDEV-8134: The relay-log is not flushed after the slave-relay-log.999999
# showed
#
--source include/have_innodb.inc
--source include/have_binlog_format_row.inc
--let $rpl_topology=1->2
--source include/rpl_init.inc
--connection server_2
--source include/stop_slave.inc
RESET SLAVE;
--source include/start_slave.inc
--source include/stop_slave.inc
--let $relay_log=query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1)
--echo #
--echo # Stop slave server
--echo #
--let $datadir = `select @@datadir`
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
--shutdown_server 10
--source include/wait_until_disconnected.inc
--exec sed -i "s/$relay_log/slave-relay-bin.999997/g" $datadir/relay-log.info
--exec sed -i "s/$relay_log/slave-relay-bin.999997/g" $datadir/slave-relay-bin.index
--echo #
--echo # Simulate file number get close to 999997
--echo # by renaming relay logs and modifying index/info files
--move_file $datadir/$relay_log $datadir/slave-relay-bin.999997
--echo #
--echo # Restart slave server
--echo #
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.2.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
SET @save_slave_parallel_threads= @@GLOBAL.slave_parallel_threads;
SET @save_max_relay_log_size= @@GLOBAL.max_relay_log_size;
SET GLOBAL slave_parallel_threads=1;
SET GLOBAL max_relay_log_size=100 * 1024;
--source include/start_slave.inc
--connection server_1
create table t1 (i int, c varchar(1024));
--echo #
--echo # Insert some data to generate enough amount of binary logs
--echo #
--let $count = 1000
--disable_query_log
while ($count)
{
eval insert into t1 values (1001 - $count, repeat('a',1000));
dec $count;
}
--enable_query_log
--save_master_pos
--connection server_2
--sync_with_master
--let $relay_log=query_get_value(SHOW SLAVE STATUS, Relay_Log_File, 1)
--echo #
--echo # Assert that 'slave-relay-bin.999999' is purged.
--echo #
let SEARCH_FILE=$datadir/slave-relay-bin.index;
let SEARCH_PATTERN=slave-relay-bin.999999;
source include/search_pattern_in_file.inc;
--source include/stop_slave.inc
SET GLOBAL slave_parallel_threads= @save_slave_parallel_threads;
SET GLOBAL max_relay_log_size= @save_max_relay_log_size;
--source include/start_slave.inc
--connection server_1
DROP TABLE t1;
--source include/rpl_end.inc

View File

@ -7,11 +7,6 @@ connection slave;
--source include/have_innodb.inc --source include/have_innodb.inc
connection master; connection master;
# Bug#18326: Do not lock table for writing during prepare of statement
# The use of the ps protocol causes extra table maps in the binlog, so
# we disable the ps-protocol for this statement.
--disable_ps_protocol
# Set the default storage engine to different values on master and # Set the default storage engine to different values on master and
# slave. We need to stop the slave for the server variable to take # slave. We need to stop the slave for the server variable to take
# effect, since the variable is only read on start-up. # effect, since the variable is only read on start-up.

Some files were not shown because too many files have changed in this diff Show More