mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge with MySQL 5.1.42
- Marked a couple of tests with --big - Fixed xtradb/handler/ha_innodb.cc to call explain_filename() storage/xtradb/handler/ha_innodb.cc: Call explain_filename() to get proper names for partitioned tables
This commit is contained in:
@ -208,10 +208,6 @@ test-bt-fast:
|
|||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=stress --suite=stress
|
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=stress --suite=stress
|
||||||
|
|
||||||
test-bt-fast2:
|
|
||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
|
||||||
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --force --comment=ps --ps-protocol --report-features
|
|
||||||
|
|
||||||
test-bt-debug:
|
test-bt-debug:
|
||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=debug --force --timer \
|
@PERL@ ./mysql-test-run.pl $(MTR_EXTRA_OPTIONS) --comment=debug --force --timer \
|
||||||
|
@ -4356,7 +4356,7 @@ com_status(String *buffer __attribute__((unused)),
|
|||||||
Don't remove "limit 1",
|
Don't remove "limit 1",
|
||||||
it is protection againts SQL_SELECT_LIMIT=0
|
it is protection againts SQL_SELECT_LIMIT=0
|
||||||
*/
|
*/
|
||||||
if (mysql_store_result_for_lazy(&result))
|
if (!mysql_store_result_for_lazy(&result))
|
||||||
{
|
{
|
||||||
MYSQL_ROW cur=mysql_fetch_row(result);
|
MYSQL_ROW cur=mysql_fetch_row(result);
|
||||||
if (cur)
|
if (cur)
|
||||||
@ -4401,7 +4401,7 @@ com_status(String *buffer __attribute__((unused)),
|
|||||||
if (mysql_errno(&mysql) == CR_SERVER_GONE_ERROR)
|
if (mysql_errno(&mysql) == CR_SERVER_GONE_ERROR)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (mysql_store_result_for_lazy(&result))
|
if (!mysql_store_result_for_lazy(&result))
|
||||||
{
|
{
|
||||||
MYSQL_ROW cur=mysql_fetch_row(result);
|
MYSQL_ROW cur=mysql_fetch_row(result);
|
||||||
if (cur)
|
if (cur)
|
||||||
@ -4496,9 +4496,7 @@ server_version_string(MYSQL *con)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if (server_version == NULL)
|
if (server_version == NULL)
|
||||||
{
|
server_version= my_strdup(mysql_get_server_info(con), MYF(MY_WME));
|
||||||
server_version= strdup(mysql_get_server_info(con));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return server_version ? server_version : "";
|
return server_version ? server_version : "";
|
||||||
|
15
configure.in
15
configure.in
@ -9,15 +9,16 @@ AC_CANONICAL_SYSTEM
|
|||||||
# remember to also update version.c in ndb
|
# remember to also update version.c in ndb
|
||||||
#
|
#
|
||||||
# When changing major version number please also check switch statement
|
# When changing major version number please also check switch statement
|
||||||
# in mysqlbinlog.cc / check_master_version().
|
# in mysqlbinlog::check_master_version().
|
||||||
#
|
AM_INIT_AUTOMAKE(mysql, 5.1.42-MariaDB-rc)
|
||||||
# When merging new MySQL releases, update the version number to match the
|
|
||||||
# MySQL version number.
|
|
||||||
#
|
|
||||||
# Note: the following line must be parseable by win/configure.js:GetVersion()
|
|
||||||
AM_INIT_AUTOMAKE(mysql, 5.1.41m1-MariaDB-rc)
|
|
||||||
AM_CONFIG_HEADER([include/config.h:config.h.in])
|
AM_CONFIG_HEADER([include/config.h:config.h.in])
|
||||||
|
|
||||||
|
# Request support for automake silent-rules if available.
|
||||||
|
# Default to verbose output. One can use the configure-time
|
||||||
|
# option --enable-silent-rules or make V=0 to activate
|
||||||
|
# silent rules.
|
||||||
|
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([no])])
|
||||||
|
|
||||||
PROTOCOL_VERSION=10
|
PROTOCOL_VERSION=10
|
||||||
DOT_FRM_VERSION=6
|
DOT_FRM_VERSION=6
|
||||||
# See the libtool docs for information on how to do shared lib versions.
|
# See the libtool docs for information on how to do shared lib versions.
|
||||||
|
@ -660,7 +660,7 @@ static ha_checksum checksum_format_specifier(const char* msg)
|
|||||||
case 'u':
|
case 'u':
|
||||||
case 'x':
|
case 'x':
|
||||||
case 's':
|
case 's':
|
||||||
chksum= my_checksum(chksum, start, (uint) (p - start));
|
chksum= my_checksum(chksum, start, (uint) (p + 1 - start));
|
||||||
start= 0; /* Not in format specifier anymore */
|
start= 0; /* Not in format specifier anymore */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1030,8 +1030,10 @@ static char *parse_text_line(char *pos)
|
|||||||
{
|
{
|
||||||
int i, nr;
|
int i, nr;
|
||||||
char *row= pos;
|
char *row= pos;
|
||||||
|
size_t len;
|
||||||
DBUG_ENTER("parse_text_line");
|
DBUG_ENTER("parse_text_line");
|
||||||
|
|
||||||
|
len= strlen (pos);
|
||||||
while (*pos)
|
while (*pos)
|
||||||
{
|
{
|
||||||
if (*pos == '\\')
|
if (*pos == '\\')
|
||||||
@ -1039,11 +1041,11 @@ static char *parse_text_line(char *pos)
|
|||||||
switch (*++pos) {
|
switch (*++pos) {
|
||||||
case '\\':
|
case '\\':
|
||||||
case '"':
|
case '"':
|
||||||
VOID(strmov(pos - 1, pos));
|
VOID(memmove (pos - 1, pos, len - (row - pos)));
|
||||||
break;
|
break;
|
||||||
case 'n':
|
case 'n':
|
||||||
pos[-1]= '\n';
|
pos[-1]= '\n';
|
||||||
VOID(strmov(pos, pos + 1));
|
VOID(memmove (pos, pos + 1, len - (row - pos)));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (*pos >= '0' && *pos < '8')
|
if (*pos >= '0' && *pos < '8')
|
||||||
@ -1053,10 +1055,10 @@ static char *parse_text_line(char *pos)
|
|||||||
nr= nr * 8 + (*(pos++) - '0');
|
nr= nr * 8 + (*(pos++) - '0');
|
||||||
pos -= i;
|
pos -= i;
|
||||||
pos[-1]= nr;
|
pos[-1]= nr;
|
||||||
VOID(strmov(pos, pos + i));
|
VOID(memmove (pos, pos + i, len - (row - pos)));
|
||||||
}
|
}
|
||||||
else if (*pos)
|
else if (*pos)
|
||||||
VOID(strmov(pos - 1, pos)); /* Remove '\' */
|
VOID(memmove (pos - 1, pos, len - (row - pos))); /* Remove '\' */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -558,16 +558,6 @@ unsigned long STDCALL mysql_real_escape_string(MYSQL *mysql,
|
|||||||
char *to,const char *from,
|
char *to,const char *from,
|
||||||
unsigned long length);
|
unsigned long length);
|
||||||
void STDCALL mysql_debug(const char *debug);
|
void STDCALL mysql_debug(const char *debug);
|
||||||
char * STDCALL mysql_odbc_escape_string(MYSQL *mysql,
|
|
||||||
char *to,
|
|
||||||
unsigned long to_length,
|
|
||||||
const char *from,
|
|
||||||
unsigned long from_length,
|
|
||||||
void *param,
|
|
||||||
char *
|
|
||||||
(*extend_buffer)
|
|
||||||
(void *, char *to,
|
|
||||||
unsigned long *length));
|
|
||||||
void STDCALL myodbc_remove_escape(MYSQL *mysql,char *name);
|
void STDCALL myodbc_remove_escape(MYSQL *mysql,char *name);
|
||||||
unsigned int STDCALL mysql_thread_safe(void);
|
unsigned int STDCALL mysql_thread_safe(void);
|
||||||
my_bool STDCALL mysql_embedded(void);
|
my_bool STDCALL mysql_embedded(void);
|
||||||
|
@ -518,16 +518,6 @@ unsigned long mysql_real_escape_string(MYSQL *mysql,
|
|||||||
char *to,const char *from,
|
char *to,const char *from,
|
||||||
unsigned long length);
|
unsigned long length);
|
||||||
void mysql_debug(const char *debug);
|
void mysql_debug(const char *debug);
|
||||||
char * mysql_odbc_escape_string(MYSQL *mysql,
|
|
||||||
char *to,
|
|
||||||
unsigned long to_length,
|
|
||||||
const char *from,
|
|
||||||
unsigned long from_length,
|
|
||||||
void *param,
|
|
||||||
char *
|
|
||||||
(*extend_buffer)
|
|
||||||
(void *, char *to,
|
|
||||||
unsigned long *length));
|
|
||||||
void myodbc_remove_escape(MYSQL *mysql,char *name);
|
void myodbc_remove_escape(MYSQL *mysql,char *name);
|
||||||
unsigned int mysql_thread_safe(void);
|
unsigned int mysql_thread_safe(void);
|
||||||
my_bool mysql_embedded(void);
|
my_bool mysql_embedded(void);
|
||||||
|
@ -225,8 +225,8 @@ struct st_vio
|
|||||||
#endif /* HAVE_SMEM */
|
#endif /* HAVE_SMEM */
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
OVERLAPPED pipe_overlapped;
|
OVERLAPPED pipe_overlapped;
|
||||||
DWORD read_timeout_millis;
|
DWORD read_timeout_ms;
|
||||||
DWORD write_timeout_millis;
|
DWORD write_timeout_ms;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
#endif /* vio_violite_h_ */
|
#endif /* vio_violite_h_ */
|
||||||
|
@ -1642,20 +1642,6 @@ mysql_real_escape_string(MYSQL *mysql, char *to,const char *from,
|
|||||||
return (uint) escape_string_for_mysql(mysql->charset, to, 0, from, length);
|
return (uint) escape_string_for_mysql(mysql->charset, to, 0, from, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char * STDCALL
|
|
||||||
mysql_odbc_escape_string(MYSQL *mysql __attribute__((unused)),
|
|
||||||
char *to __attribute__((unused)),
|
|
||||||
ulong to_length __attribute__((unused)),
|
|
||||||
const char *from __attribute__((unused)),
|
|
||||||
ulong from_length __attribute__((unused)),
|
|
||||||
void *param __attribute__((unused)),
|
|
||||||
char * (*extend_buffer)(void *, char *, ulong *)
|
|
||||||
__attribute__((unused)))
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void STDCALL
|
void STDCALL
|
||||||
myodbc_remove_escape(MYSQL *mysql,char *name)
|
myodbc_remove_escape(MYSQL *mysql,char *name)
|
||||||
{
|
{
|
||||||
|
@ -78,7 +78,6 @@ EXPORTS
|
|||||||
mysql_next_result
|
mysql_next_result
|
||||||
mysql_num_fields
|
mysql_num_fields
|
||||||
mysql_num_rows
|
mysql_num_rows
|
||||||
mysql_odbc_escape_string
|
|
||||||
mysql_options
|
mysql_options
|
||||||
mysql_stmt_param_count
|
mysql_stmt_param_count
|
||||||
mysql_stmt_param_metadata
|
mysql_stmt_param_metadata
|
||||||
|
@ -50,7 +50,6 @@ EXPORTS
|
|||||||
mysql_next_result
|
mysql_next_result
|
||||||
mysql_num_fields
|
mysql_num_fields
|
||||||
mysql_num_rows
|
mysql_num_rows
|
||||||
mysql_odbc_escape_string
|
|
||||||
mysql_options
|
mysql_options
|
||||||
mysql_ping
|
mysql_ping
|
||||||
mysql_query
|
mysql_query
|
||||||
|
@ -13,15 +13,13 @@ funcs_1.ndb* # joro : NDB tests marked as experiment
|
|||||||
funcs_2.ndb_charset # joro : NDB tests marked as experimental as agreed with bochklin
|
funcs_2.ndb_charset # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
|
|
||||||
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
|
main.ctype_gbk_binlog @solaris # Bug#46010: main.ctype_gbk_binlog fails sporadically : Table 't2' already exists
|
||||||
main.innodb-autoinc* # Bug#47809 2009-10-04 joro innodb-autoinc.test fails with valgrind errors with the innodb plugin
|
|
||||||
main.plugin_load @solaris # Bug#42144
|
main.plugin_load @solaris # Bug#42144
|
||||||
|
|
||||||
ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
|
ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
|
|
||||||
rpl.rpl_cross_version* # Bug #43913 2009-10-26 joro rpl_cross_version can't pass on conflicts complainig clash with --slave-load-tm
|
rpl.rpl_cross_version* # Bug#48340 2009-12-01 Daogang rpl_cross_version: Found warnings/errors in server log file!
|
||||||
rpl.rpl_get_master_version_and_clock* # Bug#46931 2009-08-26 alik rpl.rpl_get_master_version_and_clock fails on hpux11.31
|
rpl.rpl_get_master_version_and_clock* # Bug #49191 2009-12-01 Daogang rpl_get_master_version_and_clock failed on PB2: COM_REGISTER_SLAVE failed
|
||||||
rpl.rpl_innodb_bug28430* @solaris # Bug#46029
|
rpl.rpl_innodb_bug28430* @solaris # Bug#46029
|
||||||
rpl.rpl_row_create_table* # Bug#45576: rpl_row_create_table fails on PB2
|
|
||||||
rpl.rpl_trigger* # Bug#47810 2009-10-04 joro rpl.rpl_trigger.test fails with valgrind errors with the innodb plugin
|
rpl.rpl_trigger* # Bug#47810 2009-10-04 joro rpl.rpl_trigger.test fails with valgrind errors with the innodb plugin
|
||||||
|
|
||||||
rpl_ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
|
rpl_ndb.* # joro : NDB tests marked as experimental as agreed with bochklin
|
||||||
|
@ -407,37 +407,57 @@ sync_slave_with_master;
|
|||||||
###########################################
|
###########################################
|
||||||
# Bug#22234, Bug#23907 Extra Slave Col is not
|
# Bug#22234, Bug#23907 Extra Slave Col is not
|
||||||
# erroring on extra col with no default values.
|
# erroring on extra col with no default values.
|
||||||
########################################################
|
###############################################################
|
||||||
|
# Error reaction is up to sql_mode of the slave sql (bug#38173)
|
||||||
#--echo *** Create t9 on slave ***
|
#--echo *** Create t9 on slave ***
|
||||||
STOP SLAVE;
|
# Please, check BUG#47741 to see why you are not testing NDB.
|
||||||
RESET SLAVE;
|
if (`SELECT $engine_type != 'NDB'`)
|
||||||
eval CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
{
|
||||||
d TIMESTAMP,
|
STOP SLAVE;
|
||||||
e INT NOT NULL) ENGINE=$engine_type;
|
RESET SLAVE;
|
||||||
|
eval CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
||||||
|
d TIMESTAMP,
|
||||||
|
e INT NOT NULL,
|
||||||
|
f text not null,
|
||||||
|
g text,
|
||||||
|
h blob not null,
|
||||||
|
i blob) ENGINE=$engine_type;
|
||||||
|
|
||||||
--echo *** Create t9 on Master ***
|
--echo *** Create t9 on Master ***
|
||||||
connection master;
|
connection master;
|
||||||
eval CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
eval CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||||
) ENGINE=$engine_type;
|
) ENGINE=$engine_type;
|
||||||
RESET MASTER;
|
RESET MASTER;
|
||||||
|
|
||||||
--echo *** Start Slave ***
|
--echo *** Start Slave ***
|
||||||
connection slave;
|
connection slave;
|
||||||
START SLAVE;
|
START SLAVE;
|
||||||
|
|
||||||
--echo *** Master Data Insert ***
|
--echo *** Master Data Insert ***
|
||||||
connection master;
|
connection master;
|
||||||
set @b1 = 'b1b1b1b1';
|
set @b1 = 'b1b1b1b1';
|
||||||
set @b1 = concat(@b1,@b1);
|
|
||||||
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
|
||||||
|
|
||||||
connection slave;
|
set @b1 = concat(@b1,@b1);
|
||||||
--source include/wait_for_slave_sql_to_stop.inc
|
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
|
||||||
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
|
# the test would stop slave if @@sql_mode for the sql thread
|
||||||
--query_vertical SHOW SLAVE STATUS
|
# was set to strict. Otherwise, as with this tests setup,
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
# the implicit defaults will be inserted into fields even though
|
||||||
START SLAVE;
|
# they are declared without DEFAULT clause.
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
select * from t9;
|
||||||
|
|
||||||
|
# todo: fix Bug #43992 slave sql thread can't tune own sql_mode ...
|
||||||
|
# and add/restore waiting for stop test
|
||||||
|
|
||||||
|
#--source include/wait_for_slave_sql_to_stop.inc
|
||||||
|
#--replace_result $MASTER_MYPORT MASTER_PORT
|
||||||
|
#--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
|
||||||
|
#--query_vertical SHOW SLAVE STATUS
|
||||||
|
#SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
||||||
|
#START SLAVE;
|
||||||
|
}
|
||||||
|
|
||||||
#--echo *** Drop t9 ***
|
#--echo *** Drop t9 ***
|
||||||
#connection master;
|
#connection master;
|
||||||
|
364
mysql-test/extra/rpl_tests/rpl_not_null.test
Normal file
364
mysql-test/extra/rpl_tests/rpl_not_null.test
Normal file
@ -0,0 +1,364 @@
|
|||||||
|
#################################################################################
|
||||||
|
# This test checks if the replication between "null" fields to either "null"
|
||||||
|
# fields or "not null" fields works properly. In the first case, the execution
|
||||||
|
# should work fine. In the second case, it may fail according to the sql_mode
|
||||||
|
# being used.
|
||||||
|
#
|
||||||
|
# The test is devided in three main parts:
|
||||||
|
#
|
||||||
|
# 1 - NULL --> NULL (no failures)
|
||||||
|
# 2 - NULL --> NOT NULL ( sql-mode = STRICT and failures)
|
||||||
|
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures)
|
||||||
|
#
|
||||||
|
#################################################################################
|
||||||
|
connection master;
|
||||||
|
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
eval CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
|
||||||
|
eval CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
|
||||||
|
eval CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
|
||||||
|
eval CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
|
||||||
|
eval CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
|
||||||
|
eval CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
|
||||||
|
eval CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00',
|
||||||
|
`c` INT DEFAULT 500,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
|
||||||
|
eval CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00',
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
|
||||||
|
--echo ************* EXECUTION WITH INSERTS *************
|
||||||
|
connection master;
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1, null, 1);
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
INSERT INTO t1(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t1(a,c) VALUES (4, 4);
|
||||||
|
INSERT INTO t1(a) VALUES (5);
|
||||||
|
|
||||||
|
INSERT INTO t2(a,b) VALUES (1, null);
|
||||||
|
INSERT INTO t2(a,b) VALUES (2,'1111-11-11');
|
||||||
|
INSERT INTO t2(a) VALUES (3);
|
||||||
|
|
||||||
|
INSERT INTO t3(a,b) VALUES (1, null);
|
||||||
|
INSERT INTO t3(a,b) VALUES (2,'1111-11-11');
|
||||||
|
INSERT INTO t3(a) VALUES (3);
|
||||||
|
|
||||||
|
INSERT INTO t4(a,b,c) VALUES (1, null, 1);
|
||||||
|
INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
INSERT INTO t4(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t4(a,c) VALUES (4, 4);
|
||||||
|
INSERT INTO t4(a) VALUES (5);
|
||||||
|
|
||||||
|
--echo ************* SHOWING THE RESULT SETS WITH INSERTS *************
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
--echo TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
let $diff_table_1=master:test.t1;
|
||||||
|
let $diff_table_2=slave:test.t1;
|
||||||
|
source include/diff_tables.inc;
|
||||||
|
|
||||||
|
let $diff_table_1=master:test.t2;
|
||||||
|
let $diff_table_2=slave:test.t2;
|
||||||
|
source include/diff_tables.inc;
|
||||||
|
|
||||||
|
--echo TABLES t2 and t3 must be different.
|
||||||
|
connection master;
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
connection slave;
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
connection master;
|
||||||
|
SELECT * FROM t4 ORDER BY a;
|
||||||
|
connection slave;
|
||||||
|
SELECT * FROM t4 ORDER BY a;
|
||||||
|
|
||||||
|
--echo ************* EXECUTION WITH UPDATES and REPLACES *************
|
||||||
|
connection master;
|
||||||
|
DELETE FROM t1;
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1);
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
UPDATE t1 set b= NULL, c= 300 where a= 1;
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300);
|
||||||
|
|
||||||
|
--echo ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES *************
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
--echo TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
let $diff_table_1=master:test.t1;
|
||||||
|
let $diff_table_2=slave:test.t1;
|
||||||
|
source include/diff_tables.inc;
|
||||||
|
|
||||||
|
--echo ************* CLEANING *************
|
||||||
|
connection master;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
eval CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`a`)) ENGINE= $engine;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
|
||||||
|
eval CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`a`)) ENGINE= $engine;
|
||||||
|
|
||||||
|
--echo ************* EXECUTION WITH INSERTS *************
|
||||||
|
connection master;
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1, null, b'01');
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01');
|
||||||
|
INSERT INTO t1(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t1(a,c) VALUES (4, b'01');
|
||||||
|
INSERT INTO t1(a) VALUES (5);
|
||||||
|
|
||||||
|
--echo ************* SHOWING THE RESULT SETS WITH INSERTS *************
|
||||||
|
--echo TABLES t1 and t2 must be different.
|
||||||
|
sync_slave_with_master;
|
||||||
|
connection master;
|
||||||
|
SELECT a,b+0,c+0 FROM t1 ORDER BY a;
|
||||||
|
connection slave;
|
||||||
|
SELECT a,b+0,c+0 FROM t1 ORDER BY a;
|
||||||
|
|
||||||
|
--echo ************* EXECUTION WITH UPDATES and REPLACES *************
|
||||||
|
connection master;
|
||||||
|
DELETE FROM t1;
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01');
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01');
|
||||||
|
UPDATE t1 set b= NULL, c= b'00' where a= 1;
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00');
|
||||||
|
|
||||||
|
--echo ************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES *************
|
||||||
|
--echo TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
sync_slave_with_master;
|
||||||
|
let $diff_table_1=master:test.t1;
|
||||||
|
let $diff_table_2=slave:test.t1;
|
||||||
|
source include/diff_tables.inc;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
--echo ################################################################################
|
||||||
|
--echo # NULL ---> NOT NULL (STRICT MODE)
|
||||||
|
--echo # UNCOMMENT THIS AFTER FIXING BUG#43992
|
||||||
|
--echo ################################################################################
|
||||||
|
#connection slave;
|
||||||
|
#SET GLOBAL sql_mode="TRADITIONAL";
|
||||||
|
#
|
||||||
|
#STOP SLAVE;
|
||||||
|
#--source include/wait_for_slave_to_stop.inc
|
||||||
|
#START SLAVE;
|
||||||
|
#--source include/wait_for_slave_to_start.inc
|
||||||
|
#
|
||||||
|
#let $y=0;
|
||||||
|
#while (`select $y < 6`)
|
||||||
|
#{
|
||||||
|
# connection master;
|
||||||
|
#
|
||||||
|
# SET SQL_LOG_BIN= 0;
|
||||||
|
# eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT,
|
||||||
|
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
# eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT,
|
||||||
|
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
# eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT,
|
||||||
|
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
# SET SQL_LOG_BIN= 1;
|
||||||
|
#
|
||||||
|
# connection slave;
|
||||||
|
#
|
||||||
|
# eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
# `c` INT NOT NULL,
|
||||||
|
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
# eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
# `c` INT,
|
||||||
|
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
# eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
# `c` INT DEFAULT 500,
|
||||||
|
# PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
#
|
||||||
|
# if (`select $y=0`)
|
||||||
|
# {
|
||||||
|
# --echo ************* EXECUTION WITH INSERTS *************
|
||||||
|
# connection master;
|
||||||
|
# INSERT INTO t1(a) VALUES (1);
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# if (`select $y=1`)
|
||||||
|
# {
|
||||||
|
# --echo ************* EXECUTION WITH INSERTS *************
|
||||||
|
# connection master;
|
||||||
|
# INSERT INTO t1(a, b) VALUES (1, NULL);
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# if (`select $y=2`)
|
||||||
|
# {
|
||||||
|
# --echo ************* EXECUTION WITH UPDATES *************
|
||||||
|
# connection master;
|
||||||
|
# INSERT INTO t3(a, b) VALUES (1, 1);
|
||||||
|
# INSERT INTO t3(a, b) VALUES (2, 1);
|
||||||
|
# UPDATE t3 SET b = NULL where a= 1;
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# if (`select $y=3`)
|
||||||
|
# {
|
||||||
|
# --echo ************* EXECUTION WITH INSERTS/REPLACES *************
|
||||||
|
# connection master;
|
||||||
|
# REPLACE INTO t3(a, b) VALUES (1, null);
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# if (`select $y=4`)
|
||||||
|
# {
|
||||||
|
# --echo ************* EXECUTION WITH UPDATES/REPLACES *************
|
||||||
|
# connection master;
|
||||||
|
# INSERT INTO t3(a, b) VALUES (1, 1);
|
||||||
|
# REPLACE INTO t3(a, b) VALUES (1, null);
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# if (`select $y=5`)
|
||||||
|
# {
|
||||||
|
# --echo ************* EXECUTION WITH MULTI-ROW INSERTS *************
|
||||||
|
# connection master;
|
||||||
|
#
|
||||||
|
# SET SQL_LOG_BIN= 0;
|
||||||
|
# INSERT INTO t2(a, b) VALUES (1, 1);
|
||||||
|
# INSERT INTO t2(a, b) VALUES (2, 1);
|
||||||
|
# INSERT INTO t2(a, b) VALUES (3, null);
|
||||||
|
# INSERT INTO t2(a, b) VALUES (4, 1);
|
||||||
|
# INSERT INTO t2(a, b) VALUES (5, 1);
|
||||||
|
# SET SQL_LOG_BIN= 1;
|
||||||
|
#
|
||||||
|
# INSERT INTO t2 SELECT a + 10, b from t2;
|
||||||
|
# --echo The statement below is just executed to stop processing
|
||||||
|
# INSERT INTO t1(a) VALUES (1);
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# --echo ************* SHOWING THE RESULT SETS *************
|
||||||
|
# connection slave;
|
||||||
|
# --source include/wait_for_slave_sql_to_stop.inc
|
||||||
|
# connection master;
|
||||||
|
# SELECT * FROM t1 ORDER BY a;
|
||||||
|
# connection slave;
|
||||||
|
# SELECT * FROM t1 ORDER BY a;
|
||||||
|
# connection master;
|
||||||
|
# SELECT * FROM t2 ORDER BY a;
|
||||||
|
# connection slave;
|
||||||
|
# SELECT * FROM t2 ORDER BY a;
|
||||||
|
# connection master;
|
||||||
|
# SELECT * FROM t3 ORDER BY a;
|
||||||
|
# connection slave;
|
||||||
|
# SELECT * FROM t3 ORDER BY a;
|
||||||
|
# --source include/reset_master_and_slave.inc
|
||||||
|
#
|
||||||
|
# connection master;
|
||||||
|
#
|
||||||
|
# DROP TABLE t1;
|
||||||
|
# DROP TABLE t2;
|
||||||
|
# DROP TABLE t3;
|
||||||
|
#
|
||||||
|
# sync_slave_with_master;
|
||||||
|
#
|
||||||
|
# inc $y;
|
||||||
|
#}
|
||||||
|
#connection slave;
|
||||||
|
#SET GLOBAL sql_mode="";
|
||||||
|
#
|
||||||
|
#STOP SLAVE;
|
||||||
|
#source include/wait_for_slave_to_stop.inc;
|
||||||
|
#START SLAVE;
|
||||||
|
#--source include/wait_for_slave_to_start.inc
|
||||||
|
|
||||||
|
--echo ################################################################################
|
||||||
|
--echo # NULL ---> NOT NULL (NON-STRICT MODE)
|
||||||
|
--echo ################################################################################
|
||||||
|
connection master;
|
||||||
|
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
|
||||||
|
eval CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT NOT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
eval CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
eval CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT DEFAULT 500,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=$engine DEFAULT CHARSET=LATIN1;
|
||||||
|
|
||||||
|
--echo ************* EXECUTION WITH INSERTS *************
|
||||||
|
connection master;
|
||||||
|
INSERT INTO t1(a) VALUES (1);
|
||||||
|
INSERT INTO t1(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t1(a, b) VALUES (3, 1);
|
||||||
|
|
||||||
|
INSERT INTO t2(a) VALUES (1);
|
||||||
|
INSERT INTO t2(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t2(a, b) VALUES (3, 1);
|
||||||
|
|
||||||
|
INSERT INTO t3(a) VALUES (1);
|
||||||
|
INSERT INTO t3(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t3(a, b) VALUES (3, 1);
|
||||||
|
INSERT INTO t3(a, b) VALUES (4, 1);
|
||||||
|
REPLACE INTO t3(a, b) VALUES (5, null);
|
||||||
|
|
||||||
|
REPLACE INTO t3(a, b) VALUES (3, null);
|
||||||
|
UPDATE t3 SET b = NULL where a = 4;
|
||||||
|
|
||||||
|
--echo ************* SHOWING THE RESULT SETS *************
|
||||||
|
connection master;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
connection slave;
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
connection master;
|
||||||
|
SELECT * FROM t2 ORDER BY a;
|
||||||
|
connection slave;
|
||||||
|
SELECT * FROM t2 ORDER BY a;
|
||||||
|
connection master;
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
connection slave;
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
@ -111,21 +111,18 @@ SELECT a,b,x FROM t1_int ORDER BY a;
|
|||||||
SELECT a,b,HEX(x),HEX(y),HEX(z) FROM t1_bit ORDER BY a;
|
SELECT a,b,HEX(x),HEX(y),HEX(z) FROM t1_bit ORDER BY a;
|
||||||
SELECT a,b,x FROM t1_char ORDER BY a;
|
SELECT a,b,x FROM t1_char ORDER BY a;
|
||||||
|
|
||||||
# Each of these inserts should generate an error and stop the slave
|
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
INSERT INTO t9 VALUES (2);
|
INSERT INTO t9 VALUES (2);
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
# Now slave is guaranteed to be running
|
# Now slave is guaranteed to be running
|
||||||
connection master;
|
connection master;
|
||||||
INSERT INTO t1_nodef VALUES (1,2);
|
INSERT INTO t1_nodef VALUES (1,2);
|
||||||
connection slave;
|
|
||||||
--source include/wait_for_slave_sql_to_stop.inc
|
# Last insert on wider slave table succeeds while slave sql sql_mode permits.
|
||||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
# The previous version of the above test expected slave sql to stop.
|
||||||
--replace_column 1 # 4 # 7 # 8 # 9 # 20 <Last_Error> 22 # 23 # 33 # 35 <Last_IO_Errno> 36 <Last_IO_Error> 38 <Last_SQL_Error>
|
# bug#38173 relaxed conditions to stop only with the strict mode.
|
||||||
--query_vertical SHOW SLAVE STATUS
|
sync_slave_with_master;
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
select count(*) from t1_nodef;
|
||||||
START SLAVE;
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Replicating to tables with fewer columns at the end works as of WL#3228
|
# Replicating to tables with fewer columns at the end works as of WL#3228
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
-- source include/have_binlog_format_mixed_or_statement.inc
|
# Requires binlog_format=statement format since query involving
|
||||||
|
# get_lock() is logged in row format if binlog_format=mixed or row.
|
||||||
|
-- source include/have_binlog_format_statement.inc
|
||||||
-- source include/master-slave.inc
|
-- source include/master-slave.inc
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
|
|
||||||
|
# Load some data into t1
|
||||||
create table t1 (word char(20) not null);
|
create table t1 (word char(20) not null);
|
||||||
load data infile '../../std_data/words.dat' into table t1;
|
load data infile '../../std_data/words.dat' into table t1;
|
||||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
@ -10,9 +15,7 @@ select * from t1 limit 10;
|
|||||||
#
|
#
|
||||||
# Test slave with wrong password
|
# Test slave with wrong password
|
||||||
#
|
#
|
||||||
save_master_pos;
|
sync_slave_with_master;
|
||||||
connection slave;
|
|
||||||
sync_with_master;
|
|
||||||
stop slave;
|
stop slave;
|
||||||
connection master;
|
connection master;
|
||||||
set password for root@"localhost" = password('foo');
|
set password for root@"localhost" = password('foo');
|
||||||
@ -29,16 +32,12 @@ sleep 2;
|
|||||||
|
|
||||||
create table t3(n int);
|
create table t3(n int);
|
||||||
insert into t3 values(1),(2);
|
insert into t3 values(1),(2);
|
||||||
save_master_pos;
|
sync_slave_with_master;
|
||||||
connection slave;
|
|
||||||
sync_with_master;
|
|
||||||
select * from t3;
|
select * from t3;
|
||||||
select sum(length(word)) from t1;
|
select sum(length(word)) from t1;
|
||||||
connection master;
|
connection master;
|
||||||
drop table t1,t3;
|
drop table t1,t3;
|
||||||
save_master_pos;
|
sync_slave_with_master;
|
||||||
connection slave;
|
|
||||||
sync_with_master;
|
|
||||||
|
|
||||||
# Test if the slave SQL thread can be more than 16K behind the slave
|
# Test if the slave SQL thread can be more than 16K behind the slave
|
||||||
# I/O thread (> IO_SIZE)
|
# I/O thread (> IO_SIZE)
|
||||||
@ -77,12 +76,13 @@ unlock tables;
|
|||||||
connection master;
|
connection master;
|
||||||
create table t2(id int);
|
create table t2(id int);
|
||||||
insert into t2 values(connection_id());
|
insert into t2 values(connection_id());
|
||||||
save_master_pos;
|
|
||||||
|
|
||||||
connection master1;
|
connection master1;
|
||||||
# Avoid generating result
|
# Avoid generating result
|
||||||
create temporary table t3(n int);
|
create temporary table t3(n int);
|
||||||
|
--disable_warnings
|
||||||
insert into t3 select get_lock('crash_lock%20C', 1) from t2;
|
insert into t3 select get_lock('crash_lock%20C', 1) from t2;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
send update t1 set n = n + get_lock('crash_lock%20C', 2);
|
send update t1 set n = n + get_lock('crash_lock%20C', 2);
|
||||||
@ -93,8 +93,11 @@ kill @id;
|
|||||||
# We don't drop t3 as this is a temporary table
|
# We don't drop t3 as this is a temporary table
|
||||||
drop table t2;
|
drop table t2;
|
||||||
connection master;
|
connection master;
|
||||||
|
# The get_lock function causes warning for unsafe statement.
|
||||||
|
--disable_warnings
|
||||||
--error 1317,2013
|
--error 1317,2013
|
||||||
reap;
|
reap;
|
||||||
|
--enable_warnings
|
||||||
connection slave;
|
connection slave;
|
||||||
# The SQL slave thread should now have stopped because the query was killed on
|
# The SQL slave thread should now have stopped because the query was killed on
|
||||||
# the master (so it has a non-zero error code in the binlog).
|
# the master (so it has a non-zero error code in the binlog).
|
||||||
@ -117,16 +120,12 @@ insert into mysql.user (Host, User, Password)
|
|||||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||||
update mysql.user set Select_priv = "Y" where User= _binary"blafasel2";
|
update mysql.user set Select_priv = "Y" where User= _binary"blafasel2";
|
||||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||||
save_master_pos;
|
sync_slave_with_master;
|
||||||
connection slave;
|
|
||||||
sync_with_master;
|
|
||||||
select n from t1;
|
select n from t1;
|
||||||
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
select select_priv,user from mysql.user where user = _binary'blafasel2';
|
||||||
connection master1;
|
connection master1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
delete from mysql.user where user="blafasel2";
|
delete from mysql.user where user="blafasel2";
|
||||||
save_master_pos;
|
sync_slave_with_master;
|
||||||
connection slave;
|
|
||||||
sync_with_master;
|
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -175,6 +175,8 @@ INSERT INTO global_suppressions VALUES
|
|||||||
("Can't find file: '.\\\\test\\\\\\?{8}.frm'"),
|
("Can't find file: '.\\\\test\\\\\\?{8}.frm'"),
|
||||||
("Slave: Unknown table 't1' Error_code: 1051"),
|
("Slave: Unknown table 't1' Error_code: 1051"),
|
||||||
|
|
||||||
|
/* Maria storage engine dependent tests */
|
||||||
|
|
||||||
/* maria-recovery.test has warning about missing log file */
|
/* maria-recovery.test has warning about missing log file */
|
||||||
("File '.*maria_log.000.*' not found \\(Errcode: 2\\)"),
|
("File '.*maria_log.000.*' not found \\(Errcode: 2\\)"),
|
||||||
/* and about marked-corrupted table */
|
/* and about marked-corrupted table */
|
||||||
@ -184,6 +186,14 @@ INSERT INTO global_suppressions VALUES
|
|||||||
("Table '..mysqltest.t_corrupted2' is marked as crashed and should be"),
|
("Table '..mysqltest.t_corrupted2' is marked as crashed and should be"),
|
||||||
("Incorrect key file for table '..mysqltest.t_corrupted2.MAI'"),
|
("Incorrect key file for table '..mysqltest.t_corrupted2.MAI'"),
|
||||||
|
|
||||||
|
/*
|
||||||
|
Transient network failures that cause warnings on reconnect.
|
||||||
|
BUG#47743 and BUG#47983.
|
||||||
|
*/
|
||||||
|
("Slave I/O: Get master SERVER_ID failed with error:.*"),
|
||||||
|
("Slave I/O: Get master clock failed with error:.*"),
|
||||||
|
("Slave I/O: Get master COLLATION_SERVER failed with error:.*"),
|
||||||
|
("Slave I/O: Get master TIME_ZONE failed with error:.*"),
|
||||||
|
|
||||||
("THE_LAST_SUPPRESSION")||
|
("THE_LAST_SUPPRESSION")||
|
||||||
|
|
||||||
|
@ -524,6 +524,10 @@ sub collect_one_suite
|
|||||||
next if ($test->{'name'} eq 'sys_vars.innodb_thread_concurrency_basic');
|
next if ($test->{'name'} eq 'sys_vars.innodb_thread_concurrency_basic');
|
||||||
# Can't work with InnoPlug. Test framework needs to be re-designed.
|
# Can't work with InnoPlug. Test framework needs to be re-designed.
|
||||||
next if ($test->{'name'} eq 'main.innodb_bug46000');
|
next if ($test->{'name'} eq 'main.innodb_bug46000');
|
||||||
|
# Fails with innodb plugin
|
||||||
|
next if ($test->{'name'} eq 'main.innodb-autoinc');
|
||||||
|
# Fails with innodb plugin: r6185 Testcases changes not included
|
||||||
|
next if ($test->{'name'} eq 'main.innodb_bug44369');
|
||||||
# Copy test options
|
# Copy test options
|
||||||
my $new_test= My::Test->new();
|
my $new_test= My::Test->new();
|
||||||
while (my ($key, $value) = each(%$test))
|
while (my ($key, $value) = each(%$test))
|
||||||
|
@ -12717,3 +12717,14 @@ COUNT(t1.a)
|
|||||||
729
|
729
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@join_buffer_size= @save_join_buffer_size;
|
SET @@join_buffer_size= @save_join_buffer_size;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
||||||
|
INSERT INTO t1 (col1, col2) VALUES (1, "value");
|
||||||
|
ERROR HY000: Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
||||||
|
REPAIR TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 repair Error Table upgrade required. Please do "REPAIR TABLE `t1`" or dump/reload to fix it!
|
||||||
|
test.t1 repair error Corrupt
|
||||||
|
DROP TABLE t1;
|
||||||
|
14
mysql-test/r/bug47671.result
Normal file
14
mysql-test/r/bug47671.result
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
# Bug#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39
|
||||||
|
#
|
||||||
|
# Extract only charset information from 'status' command output using regex
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Server: MariaDB
|
||||||
|
Server characterset: utf8
|
||||||
|
Db characterset: utf8
|
||||||
|
Client characterset: utf8
|
||||||
|
Conn. characterset: utf8
|
||||||
|
|
||||||
|
--------------
|
||||||
|
|
@ -314,4 +314,16 @@ a b
|
|||||||
2 2
|
2 2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set global low_priority_updates = @old_delayed_updates;
|
set global low_priority_updates = @old_delayed_updates;
|
||||||
|
#
|
||||||
|
# Bug #47682 strange behaviour of INSERT DELAYED
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
CREATE TABLE t1 (f1 integer);
|
||||||
|
CREATE TABLE t2 (f1 integer);
|
||||||
|
FLUSH TABLES WITH READ LOCK;
|
||||||
|
LOCK TABLES t1 READ;
|
||||||
|
INSERT DELAYED INTO t2 VALUES (1);
|
||||||
|
Got one of the listed errors
|
||||||
|
UNLOCK TABLES;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -324,3 +324,16 @@ a
|
|||||||
1
|
1
|
||||||
2
|
2
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# Bug #46425 crash in Diagnostics_area::set_ok_status,
|
||||||
|
# empty statement, DELETE IGNORE
|
||||||
|
#
|
||||||
|
CREATE table t1 (i INTEGER);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
CREATE TRIGGER tr1 AFTER DELETE ON t1 FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO t1 SELECT * FROM t1 AS A;
|
||||||
|
END |
|
||||||
|
DELETE IGNORE FROM t1;
|
||||||
|
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -559,3 +559,42 @@ EXECUTE s;
|
|||||||
MATCH (col) AGAINST('findme')
|
MATCH (col) AGAINST('findme')
|
||||||
DEALLOCATE PREPARE s;
|
DEALLOCATE PREPARE s;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #47930: MATCH IN BOOLEAN MODE returns too many results
|
||||||
|
# inside subquery
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
CREATE TABLE t2 (a int, b2 char(10), FULLTEXT KEY b2 (b2));
|
||||||
|
INSERT INTO t2 VALUES (1,'Scargill');
|
||||||
|
CREATE TABLE t3 (a int, b int);
|
||||||
|
INSERT INTO t3 VALUES (1,1), (2,1);
|
||||||
|
# t2 should use full text index
|
||||||
|
EXPLAIN
|
||||||
|
SELECT count(*) FROM t1 WHERE
|
||||||
|
not exists(
|
||||||
|
SELECT 1 FROM t2, t3
|
||||||
|
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||||
|
);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2 fulltext b2 b2 0 1 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
# should return 0
|
||||||
|
SELECT count(*) FROM t1 WHERE
|
||||||
|
not exists(
|
||||||
|
SELECT 1 FROM t2, t3
|
||||||
|
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||||
|
);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
# should return 0
|
||||||
|
SELECT count(*) FROM t1 WHERE
|
||||||
|
not exists(
|
||||||
|
SELECT 1 FROM t2 IGNORE INDEX (b2), t3
|
||||||
|
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||||
|
);
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -885,7 +885,7 @@ cast(sum(distinct df) as signed)
|
|||||||
3
|
3
|
||||||
select cast(min(df) as signed) from t1;
|
select cast(min(df) as signed) from t1;
|
||||||
cast(min(df) as signed)
|
cast(min(df) as signed)
|
||||||
0
|
1
|
||||||
select 1e8 * sum(distinct df) from t1;
|
select 1e8 * sum(distinct df) from t1;
|
||||||
1e8 * sum(distinct df)
|
1e8 * sum(distinct df)
|
||||||
330000000
|
330000000
|
||||||
@ -1520,4 +1520,197 @@ max i
|
|||||||
# Cleanup
|
# Cleanup
|
||||||
#
|
#
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#43668: Wrong comparison and MIN/MAX for YEAR(2)
|
||||||
|
#
|
||||||
|
create table t1 (f1 year(2), f2 year(4), f3 date, f4 datetime);
|
||||||
|
insert into t1 values
|
||||||
|
(98,1998,19980101,"1998-01-01 00:00:00"),
|
||||||
|
(00,2000,20000101,"2000-01-01 00:00:01"),
|
||||||
|
(02,2002,20020101,"2002-01-01 23:59:59"),
|
||||||
|
(60,2060,20600101,"2060-01-01 11:11:11"),
|
||||||
|
(70,1970,19700101,"1970-11-11 22:22:22"),
|
||||||
|
(NULL,NULL,NULL,NULL);
|
||||||
|
select min(f1),max(f1) from t1;
|
||||||
|
min(f1) max(f1)
|
||||||
|
70 60
|
||||||
|
select min(f2),max(f2) from t1;
|
||||||
|
min(f2) max(f2)
|
||||||
|
1970 2060
|
||||||
|
select min(f3),max(f3) from t1;
|
||||||
|
min(f3) max(f3)
|
||||||
|
1970-01-01 2060-01-01
|
||||||
|
select min(f4),max(f4) from t1;
|
||||||
|
min(f4) max(f4)
|
||||||
|
1970-11-11 22:22:22 2060-01-01 11:11:11
|
||||||
|
select a.f1 as a, b.f1 as b, a.f1 > b.f1 as gt,
|
||||||
|
a.f1 < b.f1 as lt, a.f1<=>b.f1 as eq
|
||||||
|
from t1 a, t1 b;
|
||||||
|
a b gt lt eq
|
||||||
|
98 98 0 0 1
|
||||||
|
00 98 1 0 0
|
||||||
|
02 98 1 0 0
|
||||||
|
60 98 1 0 0
|
||||||
|
70 98 0 1 0
|
||||||
|
NULL 98 NULL NULL 0
|
||||||
|
98 00 0 1 0
|
||||||
|
00 00 0 0 1
|
||||||
|
02 00 1 0 0
|
||||||
|
60 00 1 0 0
|
||||||
|
70 00 0 1 0
|
||||||
|
NULL 00 NULL NULL 0
|
||||||
|
98 02 0 1 0
|
||||||
|
00 02 0 1 0
|
||||||
|
02 02 0 0 1
|
||||||
|
60 02 1 0 0
|
||||||
|
70 02 0 1 0
|
||||||
|
NULL 02 NULL NULL 0
|
||||||
|
98 60 0 1 0
|
||||||
|
00 60 0 1 0
|
||||||
|
02 60 0 1 0
|
||||||
|
60 60 0 0 1
|
||||||
|
70 60 0 1 0
|
||||||
|
NULL 60 NULL NULL 0
|
||||||
|
98 70 1 0 0
|
||||||
|
00 70 1 0 0
|
||||||
|
02 70 1 0 0
|
||||||
|
60 70 1 0 0
|
||||||
|
70 70 0 0 1
|
||||||
|
NULL 70 NULL NULL 0
|
||||||
|
98 NULL NULL NULL 0
|
||||||
|
00 NULL NULL NULL 0
|
||||||
|
02 NULL NULL NULL 0
|
||||||
|
60 NULL NULL NULL 0
|
||||||
|
70 NULL NULL NULL 0
|
||||||
|
NULL NULL NULL NULL 1
|
||||||
|
select a.f1 as a, b.f2 as b, a.f1 > b.f2 as gt,
|
||||||
|
a.f1 < b.f2 as lt, a.f1<=>b.f2 as eq
|
||||||
|
from t1 a, t1 b;
|
||||||
|
a b gt lt eq
|
||||||
|
98 1998 0 0 1
|
||||||
|
00 1998 1 0 0
|
||||||
|
02 1998 1 0 0
|
||||||
|
60 1998 1 0 0
|
||||||
|
70 1998 0 1 0
|
||||||
|
NULL 1998 NULL NULL 0
|
||||||
|
98 2000 0 1 0
|
||||||
|
00 2000 0 0 1
|
||||||
|
02 2000 1 0 0
|
||||||
|
60 2000 1 0 0
|
||||||
|
70 2000 0 1 0
|
||||||
|
NULL 2000 NULL NULL 0
|
||||||
|
98 2002 0 1 0
|
||||||
|
00 2002 0 1 0
|
||||||
|
02 2002 0 0 1
|
||||||
|
60 2002 1 0 0
|
||||||
|
70 2002 0 1 0
|
||||||
|
NULL 2002 NULL NULL 0
|
||||||
|
98 2060 0 1 0
|
||||||
|
00 2060 0 1 0
|
||||||
|
02 2060 0 1 0
|
||||||
|
60 2060 0 0 1
|
||||||
|
70 2060 0 1 0
|
||||||
|
NULL 2060 NULL NULL 0
|
||||||
|
98 1970 1 0 0
|
||||||
|
00 1970 1 0 0
|
||||||
|
02 1970 1 0 0
|
||||||
|
60 1970 1 0 0
|
||||||
|
70 1970 0 0 1
|
||||||
|
NULL 1970 NULL NULL 0
|
||||||
|
98 NULL NULL NULL 0
|
||||||
|
00 NULL NULL NULL 0
|
||||||
|
02 NULL NULL NULL 0
|
||||||
|
60 NULL NULL NULL 0
|
||||||
|
70 NULL NULL NULL 0
|
||||||
|
NULL NULL NULL NULL 1
|
||||||
|
select a.f1 as a, b.f3 as b, a.f1 > b.f3 as gt,
|
||||||
|
a.f1 < b.f3 as lt, a.f1<=>b.f3 as eq
|
||||||
|
from t1 a, t1 b;
|
||||||
|
a b gt lt eq
|
||||||
|
98 1998-01-01 0 1 0
|
||||||
|
00 1998-01-01 1 0 0
|
||||||
|
02 1998-01-01 1 0 0
|
||||||
|
60 1998-01-01 1 0 0
|
||||||
|
70 1998-01-01 0 1 0
|
||||||
|
NULL 1998-01-01 NULL NULL 0
|
||||||
|
98 2000-01-01 0 1 0
|
||||||
|
00 2000-01-01 0 1 0
|
||||||
|
02 2000-01-01 1 0 0
|
||||||
|
60 2000-01-01 1 0 0
|
||||||
|
70 2000-01-01 0 1 0
|
||||||
|
NULL 2000-01-01 NULL NULL 0
|
||||||
|
98 2002-01-01 0 1 0
|
||||||
|
00 2002-01-01 0 1 0
|
||||||
|
02 2002-01-01 0 1 0
|
||||||
|
60 2002-01-01 1 0 0
|
||||||
|
70 2002-01-01 0 1 0
|
||||||
|
NULL 2002-01-01 NULL NULL 0
|
||||||
|
98 2060-01-01 0 1 0
|
||||||
|
00 2060-01-01 0 1 0
|
||||||
|
02 2060-01-01 0 1 0
|
||||||
|
60 2060-01-01 0 1 0
|
||||||
|
70 2060-01-01 0 1 0
|
||||||
|
NULL 2060-01-01 NULL NULL 0
|
||||||
|
98 1970-01-01 1 0 0
|
||||||
|
00 1970-01-01 1 0 0
|
||||||
|
02 1970-01-01 1 0 0
|
||||||
|
60 1970-01-01 1 0 0
|
||||||
|
70 1970-01-01 0 1 0
|
||||||
|
NULL 1970-01-01 NULL NULL 0
|
||||||
|
98 NULL NULL NULL 0
|
||||||
|
00 NULL NULL NULL 0
|
||||||
|
02 NULL NULL NULL 0
|
||||||
|
60 NULL NULL NULL 0
|
||||||
|
70 NULL NULL NULL 0
|
||||||
|
NULL NULL NULL NULL 1
|
||||||
|
select a.f1 as a, b.f4 as b, a.f1 > b.f4 as gt,
|
||||||
|
a.f1 < b.f4 as lt, a.f1<=>b.f4 as eq
|
||||||
|
from t1 a, t1 b;
|
||||||
|
a b gt lt eq
|
||||||
|
98 1998-01-01 00:00:00 0 1 0
|
||||||
|
00 1998-01-01 00:00:00 1 0 0
|
||||||
|
02 1998-01-01 00:00:00 1 0 0
|
||||||
|
60 1998-01-01 00:00:00 1 0 0
|
||||||
|
70 1998-01-01 00:00:00 0 1 0
|
||||||
|
NULL 1998-01-01 00:00:00 NULL NULL 0
|
||||||
|
98 2000-01-01 00:00:01 0 1 0
|
||||||
|
00 2000-01-01 00:00:01 0 1 0
|
||||||
|
02 2000-01-01 00:00:01 1 0 0
|
||||||
|
60 2000-01-01 00:00:01 1 0 0
|
||||||
|
70 2000-01-01 00:00:01 0 1 0
|
||||||
|
NULL 2000-01-01 00:00:01 NULL NULL 0
|
||||||
|
98 2002-01-01 23:59:59 0 1 0
|
||||||
|
00 2002-01-01 23:59:59 0 1 0
|
||||||
|
02 2002-01-01 23:59:59 0 1 0
|
||||||
|
60 2002-01-01 23:59:59 1 0 0
|
||||||
|
70 2002-01-01 23:59:59 0 1 0
|
||||||
|
NULL 2002-01-01 23:59:59 NULL NULL 0
|
||||||
|
98 2060-01-01 11:11:11 0 1 0
|
||||||
|
00 2060-01-01 11:11:11 0 1 0
|
||||||
|
02 2060-01-01 11:11:11 0 1 0
|
||||||
|
60 2060-01-01 11:11:11 0 1 0
|
||||||
|
70 2060-01-01 11:11:11 0 1 0
|
||||||
|
NULL 2060-01-01 11:11:11 NULL NULL 0
|
||||||
|
98 1970-11-11 22:22:22 1 0 0
|
||||||
|
00 1970-11-11 22:22:22 1 0 0
|
||||||
|
02 1970-11-11 22:22:22 1 0 0
|
||||||
|
60 1970-11-11 22:22:22 1 0 0
|
||||||
|
70 1970-11-11 22:22:22 0 1 0
|
||||||
|
NULL 1970-11-11 22:22:22 NULL NULL 0
|
||||||
|
98 NULL NULL NULL 0
|
||||||
|
00 NULL NULL NULL 0
|
||||||
|
02 NULL NULL NULL 0
|
||||||
|
60 NULL NULL NULL 0
|
||||||
|
70 NULL NULL NULL 0
|
||||||
|
NULL NULL NULL NULL 1
|
||||||
|
select *, f1 = f2 from t1;
|
||||||
|
f1 f2 f3 f4 f1 = f2
|
||||||
|
98 1998 1998-01-01 1998-01-01 00:00:00 1
|
||||||
|
00 2000 2000-01-01 2000-01-01 00:00:01 1
|
||||||
|
02 2002 2002-01-01 2002-01-01 23:59:59 1
|
||||||
|
60 2060 2060-01-01 2060-01-01 11:11:11 1
|
||||||
|
70 1970 1970-01-01 1970-11-11 22:22:22 1
|
||||||
|
NULL NULL NULL NULL NULL
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -443,3 +443,30 @@ DROP TABLE db1.t1, db1.t2;
|
|||||||
DROP USER mysqltest1@localhost;
|
DROP USER mysqltest1@localhost;
|
||||||
DROP DATABASE db1;
|
DROP DATABASE db1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
USE mysql;
|
||||||
|
SELECT LEFT(CURRENT_USER(),INSTR(CURRENT_USER(),'@')-1) INTO @u;
|
||||||
|
SELECT MID(CURRENT_USER(),INSTR(CURRENT_USER(),'@')+1) INTO @h;
|
||||||
|
SELECT password FROM user WHERE user=@u AND host=@h INTO @pwd;
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
user host password insert_priv
|
||||||
|
root localhost Y
|
||||||
|
UPDATE user SET insert_priv='N' WHERE user=@u AND host=@h;
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
user host password insert_priv
|
||||||
|
root localhost N
|
||||||
|
GRANT INSERT ON *.* TO CURRENT_USER();
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
user host password insert_priv
|
||||||
|
root localhost Y
|
||||||
|
UPDATE user SET insert_priv='N' WHERE user=@u AND host=@h;
|
||||||
|
GRANT INSERT ON *.* TO CURRENT_USER() IDENTIFIED BY 'keksdose';
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
user host password insert_priv
|
||||||
|
root localhost *0BB7188CF0DE9B403BA66E9DD810D82652D002EB Y
|
||||||
|
UPDATE user SET password=@pwd WHERE user=@u AND host=@h;
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
user host password insert_priv
|
||||||
|
root localhost Y
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
USE test;
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -2501,6 +2501,17 @@ SELECT a, MAX(b) FROM t WHERE b > 0 AND b < 2 GROUP BY a;
|
|||||||
a MAX(b)
|
a MAX(b)
|
||||||
2 1
|
2 1
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
#
|
||||||
|
# Bug #48472: Loose index scan inappropriately chosen for some WHERE
|
||||||
|
# conditions
|
||||||
|
#
|
||||||
|
CREATE TABLE t (a INT, b INT, INDEX (a,b));
|
||||||
|
INSERT INTO t VALUES (2,0), (2,0), (2,1), (2,1);
|
||||||
|
INSERT INTO t SELECT * FROM t;
|
||||||
|
SELECT a, MAX(b) FROM t WHERE 0=b+0 GROUP BY a;
|
||||||
|
a MAX(b)
|
||||||
|
2 0
|
||||||
|
DROP TABLE t;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
#
|
#
|
||||||
# Bug #46607: Assertion failed: (cond_type == Item::FUNC_ITEM) results in
|
# Bug #46607: Assertion failed: (cond_type == Item::FUNC_ITEM) results in
|
||||||
|
@ -197,7 +197,7 @@ c1 c2
|
|||||||
5 9
|
5 9
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 100
|
auto_increment_increment 100
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
@ -230,7 +230,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -269,7 +269,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -282,7 +282,7 @@ SELECT * FROM t1;
|
|||||||
c1
|
c1
|
||||||
-1
|
-1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 100
|
auto_increment_increment 100
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
@ -315,7 +315,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -330,7 +330,7 @@ SELECT * FROM t1;
|
|||||||
c1
|
c1
|
||||||
1
|
1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 100
|
auto_increment_increment 100
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
@ -370,7 +370,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -385,7 +385,7 @@ SELECT * FROM t1;
|
|||||||
c1
|
c1
|
||||||
1
|
1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 100
|
auto_increment_increment 100
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
@ -419,7 +419,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -434,7 +434,7 @@ c1
|
|||||||
1
|
1
|
||||||
9223372036854775794
|
9223372036854775794
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 2
|
auto_increment_increment 2
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
@ -452,7 +452,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -467,7 +467,7 @@ c1
|
|||||||
1
|
1
|
||||||
18446744073709551603
|
18446744073709551603
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 2
|
auto_increment_increment 2
|
||||||
auto_increment_offset 10
|
auto_increment_offset 10
|
||||||
@ -485,7 +485,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -500,7 +500,7 @@ c1
|
|||||||
1
|
1
|
||||||
18446744073709551603
|
18446744073709551603
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 5
|
auto_increment_increment 5
|
||||||
auto_increment_offset 7
|
auto_increment_offset 7
|
||||||
@ -514,7 +514,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -533,7 +533,7 @@ c1
|
|||||||
-9223372036854775806
|
-9223372036854775806
|
||||||
1
|
1
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 3
|
auto_increment_increment 3
|
||||||
auto_increment_offset 3
|
auto_increment_offset 3
|
||||||
@ -550,7 +550,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -568,7 +568,7 @@ SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCRE
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect auto_increment_increment value: '1152921504606846976'
|
Warning 1292 Truncated incorrect auto_increment_increment value: '1152921504606846976'
|
||||||
Warning 1292 Truncated incorrect auto_increment_offset value: '1152921504606846976'
|
Warning 1292 Truncated incorrect auto_increment_offset value: '1152921504606846976'
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 65535
|
auto_increment_increment 65535
|
||||||
auto_increment_offset 65535
|
auto_increment_offset 65535
|
||||||
@ -581,7 +581,7 @@ c1
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SET @@INSERT_ID=1;
|
SET @@INSERT_ID=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -897,7 +897,7 @@ d1
|
|||||||
4
|
4
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
SHOW VARIABLES LIKE "%auto_inc%";
|
SHOW VARIABLES LIKE "auto_inc%";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
auto_increment_increment 1
|
auto_increment_increment 1
|
||||||
auto_increment_offset 1
|
auto_increment_offset 1
|
||||||
@ -1126,3 +1126,61 @@ SELECT * FROM T1;
|
|||||||
c1 c2
|
c1 c2
|
||||||
10 0
|
10 0
|
||||||
DROP TABLE T1;
|
DROP TABLE T1;
|
||||||
|
CREATE TABLE T1(C1 DOUBLE AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO T1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb');
|
||||||
|
INSERT INTO T1(C2) VALUES ('innodb');
|
||||||
|
SHOW CREATE TABLE T1;
|
||||||
|
Table Create Table
|
||||||
|
T1 CREATE TABLE `T1` (
|
||||||
|
`C1` double NOT NULL AUTO_INCREMENT,
|
||||||
|
`C2` char(10) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`C1`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE T1;
|
||||||
|
CREATE TABLE T1(C1 FLOAT AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO T1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb');
|
||||||
|
INSERT INTO T1(C2) VALUES ('innodb');
|
||||||
|
SHOW CREATE TABLE T1;
|
||||||
|
Table Create Table
|
||||||
|
T1 CREATE TABLE `T1` (
|
||||||
|
`C1` float NOT NULL AUTO_INCREMENT,
|
||||||
|
`C2` char(10) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`C1`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE T1;
|
||||||
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 SET c1 = 1;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (`c1`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 SET c1 = 2;
|
||||||
|
INSERT INTO t1 SET c1 = -1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
INSERT INTO t1 SET c1 = -1;
|
||||||
|
Got one of the listed errors
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (`c1`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
|
||||||
|
REPLACE INTO t1 VALUES (-1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (`c1`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -48,6 +48,24 @@ commit;
|
|||||||
set autocommit=default;
|
set autocommit=default;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
#
|
#
|
||||||
|
# Bug #37183 insert ignore into .. select ... hangs
|
||||||
|
# after deadlock was encountered
|
||||||
|
#
|
||||||
|
create table t1(id int primary key,v int)engine=innodb;
|
||||||
|
insert into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7);
|
||||||
|
create table t2 like t1;
|
||||||
|
begin;
|
||||||
|
update t1 set v=id*2 where id=1;
|
||||||
|
begin;
|
||||||
|
update t1 set v=id*2 where id=2;
|
||||||
|
update t1 set v=id*2 where id=2;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
insert ignore into t2 select * from t1 where id=1;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
rollback;
|
||||||
|
rollback;
|
||||||
|
drop table t1, t2;
|
||||||
|
#
|
||||||
# Bug#41756 Strange error messages about locks from InnoDB
|
# Bug#41756 Strange error messages about locks from InnoDB
|
||||||
#
|
#
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
@ -2251,4 +2251,26 @@ c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #46175: NULL read_view and consistent read assertion
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a CHAR(13),KEY(a)) ENGINE=innodb;
|
||||||
|
CREATE TABLE t2(b DATETIME,KEY(b)) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (),();
|
||||||
|
INSERT INTO t2 VALUES (),();
|
||||||
|
CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2
|
||||||
|
WHERE b =(SELECT a FROM t1 LIMIT 1);
|
||||||
|
CREATE PROCEDURE p1(num INT)
|
||||||
|
BEGIN
|
||||||
|
DECLARE i INT DEFAULT 0;
|
||||||
|
REPEAT
|
||||||
|
SHOW CREATE VIEW v1;
|
||||||
|
SET i:=i+1;
|
||||||
|
UNTIL i>num END REPEAT;
|
||||||
|
END|
|
||||||
|
# Should not crash
|
||||||
|
# Should not crash
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -229,5 +229,4 @@ a: b
|
|||||||
</row>
|
</row>
|
||||||
</resultset>
|
</resultset>
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
End of 5.0 tests
|
||||||
End of tests
|
|
||||||
|
@ -753,4 +753,16 @@ b
|
|||||||
100
|
100
|
||||||
NULL
|
NULL
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# Bug #48475: DISTINCT is ignored with GROUP BY WITH ROLLUP
|
||||||
|
# and only const tables
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (b INT);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
SELECT DISTINCT b FROM t1, t2 GROUP BY a, b WITH ROLLUP;
|
||||||
|
b
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1, t2;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -1444,6 +1444,27 @@ FROM t3;
|
|||||||
2
|
2
|
||||||
NULL
|
NULL
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# Bug #42760: Select doesn't return desired results when we have null
|
||||||
|
# values
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT,
|
||||||
|
c INT,
|
||||||
|
UNIQUE KEY a_c (a,c),
|
||||||
|
KEY (a));
|
||||||
|
INSERT INTO t1 VALUES (1, 10), (2, NULL);
|
||||||
|
# Must use ref-or-null on the a_c index
|
||||||
|
EXPLAIN
|
||||||
|
SELECT 1 AS col FROM t1 WHERE a=2 AND (c=10 OR c IS NULL) ORDER BY c;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref_or_null a_c,a a_c 10 const,const 1 Using where
|
||||||
|
# Must return 1 row
|
||||||
|
SELECT 1 AS col FROM t1 WHERE a=2 AND (c=10 OR c IS NULL) ORDER BY c;
|
||||||
|
col
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
End of 5.0 tests
|
||||||
CREATE TABLE t2 (a varchar(32), b int(11), c float, d double,
|
CREATE TABLE t2 (a varchar(32), b int(11), c float, d double,
|
||||||
UNIQUE KEY a (a,b,c), KEY b (b), KEY c (c));
|
UNIQUE KEY a (a,b,c), KEY b (b), KEY c (c));
|
||||||
CREATE TABLE t1 (a varchar(32), b char(3), UNIQUE KEY a (a,b), KEY b (b));
|
CREATE TABLE t1 (a varchar(32), b char(3), UNIQUE KEY a (a,b), KEY b (b));
|
||||||
|
@ -1,4 +1,10 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
|
CREATE TABLE t1 (a INT, b INT)
|
||||||
|
PARTITION BY LIST (a)
|
||||||
|
SUBPARTITION BY HASH (b)
|
||||||
|
(PARTITION p1 VALUES IN (1));
|
||||||
|
ALTER TABLE t1 ADD COLUMN c INT;
|
||||||
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int NOT NULL,
|
a int NOT NULL,
|
||||||
b int NOT NULL);
|
b int NOT NULL);
|
||||||
@ -50,6 +56,13 @@ t1 CREATE TABLE `t1` (
|
|||||||
PARTITION p3 VALUES LESS THAN (733969) ENGINE = MyISAM,
|
PARTITION p3 VALUES LESS THAN (733969) ENGINE = MyISAM,
|
||||||
PARTITION pmax VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
|
PARTITION pmax VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1 (a int NOT NULL, b varchar(5) NOT NULL)
|
||||||
|
default charset=utf8
|
||||||
|
partition by list (a)
|
||||||
|
subpartition by key (b)
|
||||||
|
(partition p0 values in (1),
|
||||||
|
partition p1 values in (2));
|
||||||
|
drop table t1;
|
||||||
create table t1 (a int, b int, key(a))
|
create table t1 (a int, b int, key(a))
|
||||||
partition by list (a)
|
partition by list (a)
|
||||||
( partition p0 values in (1),
|
( partition p0 values in (1),
|
||||||
@ -2045,10 +2058,15 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
# Bug #45807: crash accessing partitioned table and sql_mode
|
# Bug #45807: crash accessing partitioned table and sql_mode
|
||||||
# contains ONLY_FULL_GROUP_BY
|
# contains ONLY_FULL_GROUP_BY
|
||||||
|
# Bug#46923: select count(*) from partitioned table fails with
|
||||||
|
# ONLY_FULL_GROUP_BY
|
||||||
#
|
#
|
||||||
SET SESSION SQL_MODE='ONLY_FULL_GROUP_BY';
|
SET SESSION SQL_MODE='ONLY_FULL_GROUP_BY';
|
||||||
CREATE TABLE t1(id INT,KEY(id)) ENGINE=MYISAM
|
CREATE TABLE t1(id INT,KEY(id)) ENGINE=MYISAM
|
||||||
PARTITION BY HASH(id) PARTITIONS 2;
|
PARTITION BY HASH(id) PARTITIONS 2;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET SESSION SQL_MODE=DEFAULT;
|
SET SESSION SQL_MODE=DEFAULT;
|
||||||
#
|
#
|
||||||
|
@ -1603,4 +1603,54 @@ SELECT str_to_date('', '%Y-%m-%d');
|
|||||||
str_to_date('', '%Y-%m-%d')
|
str_to_date('', '%Y-%m-%d')
|
||||||
0000-00-00
|
0000-00-00
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# Bug#48459: valgrind errors with query using 'Range checked for each
|
||||||
|
# record'
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT,
|
||||||
|
b CHAR(2),
|
||||||
|
c INT,
|
||||||
|
d INT,
|
||||||
|
KEY ( c ),
|
||||||
|
KEY ( d, a, b ( 2 ) ),
|
||||||
|
KEY ( b ( 1 ) )
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES ( NULL, 'a', 1, 2 ), ( NULL, 'a', 1, 2 ),
|
||||||
|
( 1, 'a', 1, 2 ), ( 1, 'a', 1, 2 );
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
a INT,
|
||||||
|
c INT,
|
||||||
|
e INT,
|
||||||
|
KEY ( e )
|
||||||
|
);
|
||||||
|
INSERT INTO t2 VALUES ( 1, 1, NULL ), ( 1, 1, NULL );
|
||||||
|
# Should not give Valgrind warnings
|
||||||
|
SELECT 1
|
||||||
|
FROM t1, t2
|
||||||
|
WHERE t1.d <> '1' AND t1.b > '1'
|
||||||
|
AND t1.a = t2.a AND t1.c = t2.c;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# Bug #48665: sql-bench's insert test fails due to wrong result
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a));
|
||||||
|
INSERT INTO t1 VALUES (0,0), (1,1);
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 FORCE INDEX (PRIMARY)
|
||||||
|
WHERE (a>=1 AND a<=2) OR (a>=4 AND a<=5) OR (a>=0 AND a <=10);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
@ @ @ range @ @ @ @ @ @
|
||||||
|
# Should return 2 rows
|
||||||
|
SELECT * FROM t1 FORCE INDEX (PRIMARY)
|
||||||
|
WHERE (a>=1 AND a<=2) OR (a>=4 AND a<=5) OR (a>=0 AND a <=10);
|
||||||
|
a b
|
||||||
|
0 0
|
||||||
|
1 1
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -4426,6 +4426,20 @@ ROW(a,a) <=> ROW((SELECT 1 FROM t1 WHERE 1=2),(SELECT 1 FROM t1))
|
|||||||
INTO @var0;
|
INTO @var0;
|
||||||
ERROR 21000: Subquery returns more than 1 row
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #48458: simple query tries to allocate enormous amount of
|
||||||
|
# memory
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a INT NOT NULL, b YEAR);
|
||||||
|
INSERT INTO t1 VALUES ();
|
||||||
|
Warnings:
|
||||||
|
Warning 1364 Field 'a' doesn't have a default value
|
||||||
|
CREATE TABLE t2(c INT);
|
||||||
|
# Should not err out because of out-of-memory
|
||||||
|
SELECT 1 FROM t2 JOIN t1 ON 1=1
|
||||||
|
WHERE a != '1' AND NOT a >= b OR NOT ROW(b,a )<> ROW(a,a);
|
||||||
|
1
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
create table t1(a INT, KEY (a));
|
create table t1(a INT, KEY (a));
|
||||||
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
||||||
@ -4576,4 +4590,47 @@ field2
|
|||||||
15:13:38
|
15:13:38
|
||||||
drop table A,AA,B,BB;
|
drop table A,AA,B,BB;
|
||||||
#end of test for bug#45266
|
#end of test for bug#45266
|
||||||
|
#
|
||||||
|
# BUG#48052: Valgrind warning - uninitialized value in init_read_record()
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int(11) NOT NULL,
|
||||||
|
i int(11) DEFAULT NULL,
|
||||||
|
v varchar(1) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (pk)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (2,7,'m');
|
||||||
|
INSERT INTO t1 VALUES (3,9,'m');
|
||||||
|
SELECT v
|
||||||
|
FROM t1
|
||||||
|
WHERE NOT pk > 0
|
||||||
|
HAVING v <= 't'
|
||||||
|
ORDER BY pk;
|
||||||
|
v
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#49489 Uninitialized cache led to a wrong result.
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(c1 DOUBLE(5,4));
|
||||||
|
INSERT INTO t1 VALUES (9.1234);
|
||||||
|
SELECT * FROM t1 WHERE c1 < 9.12345;
|
||||||
|
c1
|
||||||
|
9.1234
|
||||||
|
DROP TABLE t1;
|
||||||
|
# End of test for bug#49489.
|
||||||
|
#
|
||||||
|
# Bug #49517: Inconsistent behavior while using
|
||||||
|
# NULLable BIGINT and INT columns in comparison
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a BIGINT UNSIGNED NOT NULL, b BIGINT NULL, c INT NULL);
|
||||||
|
INSERT INTO t1 VALUES(105, NULL, NULL);
|
||||||
|
SELECT * FROM t1 WHERE b < 102;
|
||||||
|
a b c
|
||||||
|
SELECT * FROM t1 WHERE c < 102;
|
||||||
|
a b c
|
||||||
|
SELECT * FROM t1 WHERE 102 < b;
|
||||||
|
a b c
|
||||||
|
SELECT * FROM t1 WHERE 102 < c;
|
||||||
|
a b c
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1454,4 +1454,10 @@ GRANT PROCESS ON *.* TO test_u@localhost;
|
|||||||
SHOW ENGINE MYISAM MUTEX;
|
SHOW ENGINE MYISAM MUTEX;
|
||||||
SHOW ENGINE MYISAM STATUS;
|
SHOW ENGINE MYISAM STATUS;
|
||||||
DROP USER test_u@localhost;
|
DROP USER test_u@localhost;
|
||||||
|
#
|
||||||
|
# Bug #48985: show create table crashes if previous access to the table
|
||||||
|
# was killed
|
||||||
|
#
|
||||||
|
SHOW CREATE TABLE non_existent;
|
||||||
|
ERROR 70100: Query execution was interrupted
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted");
|
||||||
use test;
|
use test;
|
||||||
drop procedure if exists bug14233;
|
drop procedure if exists bug14233;
|
||||||
drop function if exists bug14233;
|
drop function if exists bug14233;
|
||||||
@ -11,11 +12,13 @@ create table t1 (id int);
|
|||||||
create trigger t1_ai after insert on t1 for each row call bug14233();
|
create trigger t1_ai after insert on t1 for each row call bug14233();
|
||||||
alter table mysql.proc drop type;
|
alter table mysql.proc drop type;
|
||||||
call bug14233();
|
call bug14233();
|
||||||
ERROR HY000: Failed to load routine test.bug14233. The table mysql.proc is missing, corrupt, or contains bad data (internal code -5)
|
ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
|
||||||
create view v1 as select bug14233_f();
|
create view v1 as select bug14233_f();
|
||||||
ERROR HY000: Failed to load routine test.bug14233_f. The table mysql.proc is missing, corrupt, or contains bad data (internal code -5)
|
ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
|
||||||
insert into t1 values (0);
|
insert into t1 values (0);
|
||||||
ERROR HY000: Failed to load routine test.bug14233. The table mysql.proc is missing, corrupt, or contains bad data (internal code -5)
|
ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
|
||||||
|
show procedure status;
|
||||||
|
ERROR HY000: Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted
|
||||||
flush table mysql.proc;
|
flush table mysql.proc;
|
||||||
call bug14233();
|
call bug14233();
|
||||||
ERROR HY000: Incorrect information in file: './mysql/proc.frm'
|
ERROR HY000: Incorrect information in file: './mysql/proc.frm'
|
||||||
@ -88,3 +91,28 @@ show procedure status where db=DATABASE();
|
|||||||
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
|
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
|
||||||
show function status where db=DATABASE();
|
show function status where db=DATABASE();
|
||||||
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
|
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
|
||||||
|
DROP TABLE IF EXISTS proc_backup;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
# Backup the proc table
|
||||||
|
RENAME TABLE mysql.proc TO proc_backup;
|
||||||
|
CREATE TABLE mysql.proc LIKE proc_backup;
|
||||||
|
FLUSH TABLE mysql.proc;
|
||||||
|
# Test with a valid table.
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
SET @foo = 10;
|
||||||
|
CALL p1();
|
||||||
|
SHOW PROCEDURE STATUS;
|
||||||
|
Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation
|
||||||
|
test p1 PROCEDURE root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
|
# Modify a field of the table.
|
||||||
|
ALTER TABLE mysql.proc MODIFY comment CHAR (32);
|
||||||
|
CREATE PROCEDURE p2()
|
||||||
|
SET @foo = 10;
|
||||||
|
ERROR HY000: Cannot load from mysql.proc. The table is probably corrupted
|
||||||
|
# Procedure loaded from the cache
|
||||||
|
CALL p1();
|
||||||
|
SHOW PROCEDURE STATUS;
|
||||||
|
ERROR HY000: Cannot load from mysql.proc. The table is probably corrupted
|
||||||
|
DROP TABLE mysql.proc;
|
||||||
|
RENAME TABLE proc_backup TO mysql.proc;
|
||||||
|
FLUSH TABLE mysql.proc;
|
||||||
|
@ -510,4 +510,60 @@ DROP USER mysqltest_u1@localhost;
|
|||||||
DROP PROCEDURE p_suid;
|
DROP PROCEDURE p_suid;
|
||||||
DROP FUNCTION f_suid;
|
DROP FUNCTION f_suid;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #48872 : Privileges for stored functions ignored if function name
|
||||||
|
# is mixed case
|
||||||
|
#
|
||||||
|
CREATE DATABASE B48872;
|
||||||
|
USE B48872;
|
||||||
|
CREATE TABLE `TestTab` (id INT);
|
||||||
|
INSERT INTO `TestTab` VALUES (1),(2);
|
||||||
|
CREATE FUNCTION `f_Test`() RETURNS INT RETURN 123;
|
||||||
|
CREATE FUNCTION `f_Test_denied`() RETURNS INT RETURN 123;
|
||||||
|
CREATE USER 'tester';
|
||||||
|
CREATE USER 'Tester';
|
||||||
|
GRANT SELECT ON TABLE `TestTab` TO 'tester';
|
||||||
|
GRANT EXECUTE ON FUNCTION `f_Test` TO 'tester';
|
||||||
|
GRANT EXECUTE ON FUNCTION `f_Test_denied` TO 'Tester';
|
||||||
|
SELECT f_Test();
|
||||||
|
f_Test()
|
||||||
|
123
|
||||||
|
SELECT * FROM TestTab;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SELECT * FROM TestTab;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SELECT `f_Test`();
|
||||||
|
`f_Test`()
|
||||||
|
123
|
||||||
|
SELECT `F_TEST`();
|
||||||
|
`F_TEST`()
|
||||||
|
123
|
||||||
|
SELECT f_Test();
|
||||||
|
f_Test()
|
||||||
|
123
|
||||||
|
SELECT F_TEST();
|
||||||
|
F_TEST()
|
||||||
|
123
|
||||||
|
SELECT * FROM TestTab;
|
||||||
|
SELECT `f_Test`();
|
||||||
|
SELECT `F_TEST`();
|
||||||
|
SELECT f_Test();
|
||||||
|
SELECT F_TEST();
|
||||||
|
SELECT `f_Test_denied`();
|
||||||
|
`f_Test_denied`()
|
||||||
|
123
|
||||||
|
SELECT `F_TEST_DENIED`();
|
||||||
|
`F_TEST_DENIED`()
|
||||||
|
123
|
||||||
|
DROP TABLE `TestTab`;
|
||||||
|
DROP FUNCTION `f_Test`;
|
||||||
|
DROP FUNCTION `f_Test_denied`;
|
||||||
|
USE test;
|
||||||
|
DROP USER 'tester';
|
||||||
|
DROP USER 'Tester';
|
||||||
|
DROP DATABASE B48872;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
|
@ -6979,6 +6979,64 @@ CALL p1;
|
|||||||
ERROR 42S22: Unknown column 'A.b' in 'IN/ALL/ANY subquery'
|
ERROR 42S22: Unknown column 'A.b' in 'IN/ALL/ANY subquery'
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# Bug#47627: SET @@{global.session}.local_variable in stored routine causes crash
|
||||||
|
# Bug#48626: Crash or lost connection using SET for declared variables with @@
|
||||||
|
#
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
DROP PROCEDURE IF EXISTS p2;
|
||||||
|
DROP PROCEDURE IF EXISTS p3;
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SET @@SESSION.v= 10;
|
||||||
|
END//
|
||||||
|
ERROR HY000: Unknown system variable 'v'
|
||||||
|
CREATE PROCEDURE p2()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SET v= 10;
|
||||||
|
END//
|
||||||
|
call p2()//
|
||||||
|
CREATE PROCEDURE p3()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SELECT @@SESSION.v;
|
||||||
|
END//
|
||||||
|
ERROR HY000: Unknown system variable 'v'
|
||||||
|
CREATE PROCEDURE p4()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SET @@GLOBAL.v= 10;
|
||||||
|
END//
|
||||||
|
ERROR HY000: Unknown system variable 'v'
|
||||||
|
CREATE PROCEDURE p5()
|
||||||
|
BEGIN
|
||||||
|
DECLARE init_connect INT DEFAULT 0;
|
||||||
|
SET init_connect= 10;
|
||||||
|
SET @@GLOBAL.init_connect= 'SELECT 1';
|
||||||
|
SET @@SESSION.IDENTITY= 1;
|
||||||
|
SELECT @@SESSION.IDENTITY;
|
||||||
|
SELECT @@GLOBAL.init_connect;
|
||||||
|
SELECT init_connect;
|
||||||
|
END//
|
||||||
|
CREATE PROCEDURE p6()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SET @@v= 0;
|
||||||
|
END//
|
||||||
|
ERROR HY000: Unknown system variable 'v'
|
||||||
|
SET @old_init_connect= @@GLOBAL.init_connect;
|
||||||
|
CALL p5();
|
||||||
|
@@SESSION.IDENTITY
|
||||||
|
1
|
||||||
|
@@GLOBAL.init_connect
|
||||||
|
SELECT 1
|
||||||
|
init_connect
|
||||||
|
10
|
||||||
|
SET @@GLOBAL.init_connect= @old_init_connect;
|
||||||
|
DROP PROCEDURE p2;
|
||||||
|
DROP PROCEDURE p5;
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
# -- End of 5.1 tests
|
# -- End of 5.1 tests
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
|
@ -1630,3 +1630,287 @@ SELECT my_col FROM t1;
|
|||||||
my_col
|
my_col
|
||||||
0.012345687012345687012345687012
|
0.012345687012345687012345687012
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#45261: Crash, stored procedure + decimal
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,0) NO 0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
99999999999999999999999999999999999999999999999999999999999999999
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,0) NO 0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
99999999999999999999999999999999999999999999999999999999999999999
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.1 /* 1 */
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,0) NO 0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
99999999999999999999999999999999999999999999999999999999999999999
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 82 */ 1000000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Error 1292 Truncated incorrect DECIMAL value: ''
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,0) NO 0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
99999999999999999999999999999999999999999999999999999999999999999
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 40 */ 1000000000000000000000000000000000000001.1000000000000000000000000000000000000001 /* 40 */
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,30) NO 0.000000000000000000000000000000
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
99999999999999999999999999999999999.999999999999999999999999999999
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 1 */ 1.10000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 80 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(31,30) NO 0.000000000000000000000000000000
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1.100000000000000000000000000000
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 1 */ 1.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(31,30) NO 0.000000000000000000000000000000
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1.100000000000000000000000000000
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(30,30) NO 0.000000000000000000000000000000
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
0.100000000000000000000000000000
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 45 */ 123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345 /* 45 */
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,30) NO 0.000000000000000000000000000000
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
99999999999999999999999999999999999.999999999999999999999999999999
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 65 */ 12345678901234567890123456789012345678901234567890123456789012345.1 /* 1 */
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,1) NO 0.0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
9999999999999999999999999999999999999999999999999999999999999999.9
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 66 */ 123456789012345678901234567890123456789012345678901234567890123456.1 /* 1 */
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,1) NO 0.0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
9999999999999999999999999999999999999999999999999999999999999999.9
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
.123456789012345678901234567890123456789012345678901234567890123456 /* 66 */
|
||||||
|
AS c1;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(30,30) NO 0.000000000000000000000000000000
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
0.123456789012345678901234567890
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 AS SELECT 123.1234567890123456789012345678901 /* 31 */ AS c1;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c1' at row 1
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(33,30) NO 0.000000000000000000000000000000
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
123.123456789012345678901234567890
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT 1.1 + CAST(1 AS DECIMAL(65,30)) AS c1;
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,30) NO 0.000000000000000000000000000000
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
2.100000000000000000000000000000
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Test that the integer and decimal parts are properly calculated.
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||||
|
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||||
|
CREATE TABLE t2 SELECT MIN(a + 0.0000000000000000000000000000001) AS c1 FROM t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c1' at row 3
|
||||||
|
DESC t2;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(32,30) YES NULL
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||||
|
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||||
|
CREATE TABLE t2 SELECT IFNULL(a + 0.0000000000000000000000000000001, NULL) AS c1 FROM t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c1' at row 1
|
||||||
|
Note 1265 Data truncated for column 'c1' at row 2
|
||||||
|
Note 1265 Data truncated for column 'c1' at row 3
|
||||||
|
DESC t2;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(34,0) YES NULL
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1 (a DECIMAL(30,30));
|
||||||
|
INSERT INTO t1 VALUES (0.1),(0.2),(0.3);
|
||||||
|
CREATE TABLE t2 SELECT CASE a WHEN 0.1 THEN 0.0000000000000000000000000000000000000000000000000000000000000000001 END AS c1 FROM t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c1' at row 1
|
||||||
|
DESC t2;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,30) YES NULL
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# Test that variables get maximum precision.
|
||||||
|
#
|
||||||
|
SET @decimal= 1.1;
|
||||||
|
CREATE TABLE t1 SELECT @decimal AS c1;
|
||||||
|
DESC t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c1 decimal(65,30) YES NULL
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1.100000000000000000000000000000
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #45261 : Crash, stored procedure + decimal
|
||||||
|
# Original test by the reporter.
|
||||||
|
#
|
||||||
|
# should not crash
|
||||||
|
CREATE TABLE t1
|
||||||
|
SELECT .123456789012345678901234567890123456789012345678901234567890123456 AS a;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'a' at row 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE PROCEDURE test_proc()
|
||||||
|
BEGIN
|
||||||
|
# The las non critical CUSER definition is:
|
||||||
|
# DECLARE mycursor CURSOR FOR SELECT 1 %
|
||||||
|
# .12345678912345678912345678912345678912345678912345678912345678912 AS my_col;
|
||||||
|
DECLARE mycursor CURSOR FOR
|
||||||
|
SELECT 1 %
|
||||||
|
.123456789123456789123456789123456789123456789123456789123456789123456789123456789
|
||||||
|
AS my_col;
|
||||||
|
OPEN mycursor;
|
||||||
|
CLOSE mycursor;
|
||||||
|
END|
|
||||||
|
# should not crash
|
||||||
|
CALL test_proc();
|
||||||
|
DROP PROCEDURE test_proc;
|
||||||
|
#
|
||||||
|
# Bug #48370 Absolutely wrong calculations with GROUP BY and
|
||||||
|
# decimal fields when using IF
|
||||||
|
#
|
||||||
|
CREATE TABLE currencies (id int, rate decimal(16,4),
|
||||||
|
PRIMARY KEY (id), KEY (rate));
|
||||||
|
INSERT INTO currencies VALUES (11,0.7028);
|
||||||
|
INSERT INTO currencies VALUES (1,1);
|
||||||
|
CREATE TABLE payments (
|
||||||
|
id int,
|
||||||
|
supplier_id int,
|
||||||
|
status int,
|
||||||
|
currency_id int,
|
||||||
|
vat decimal(7,4),
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
KEY currency_id (currency_id),
|
||||||
|
KEY supplier_id (supplier_id)
|
||||||
|
);
|
||||||
|
INSERT INTO payments (id,status,vat,supplier_id,currency_id) VALUES
|
||||||
|
(3001,2,0.0000,344,11), (1,2,0.0000,1,1);
|
||||||
|
CREATE TABLE sub_tasks (
|
||||||
|
id int,
|
||||||
|
currency_id int,
|
||||||
|
price decimal(16,4),
|
||||||
|
discount decimal(10,4),
|
||||||
|
payment_id int,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
KEY currency_id (currency_id),
|
||||||
|
KEY payment_id (payment_id)
|
||||||
|
) ;
|
||||||
|
INSERT INTO sub_tasks (id, price, discount, payment_id, currency_id) VALUES
|
||||||
|
(52, 12.60, 0, 3001, 11), (56, 14.58, 0, 3001, 11);
|
||||||
|
# should return 1 and the same values in col 2 and 3
|
||||||
|
select STRAIGHT_JOIN
|
||||||
|
(1 + PAY.vat) AS mult,
|
||||||
|
SUM(ROUND((SUB.price - ROUND(ROUND(SUB.price, 2) * SUB.discount, 2)) *
|
||||||
|
CUR.rate / CUR.rate, 2)
|
||||||
|
) v_net_with_discount,
|
||||||
|
SUM(ROUND((SUB.price - ROUND(ROUND(SUB.price, 2) * SUB.discount, 1)) *
|
||||||
|
CUR.rate / CUR.rate , 2)
|
||||||
|
* (1 + PAY.vat)
|
||||||
|
) v_total
|
||||||
|
from
|
||||||
|
currencies CUR, payments PAY, sub_tasks SUB
|
||||||
|
where
|
||||||
|
SUB.payment_id = PAY.id and
|
||||||
|
PAY.currency_id = CUR.id and
|
||||||
|
PAY.id > 2
|
||||||
|
group by PAY.id + 1;
|
||||||
|
mult v_net_with_discount v_total
|
||||||
|
1.0000 27.18 27.180000
|
||||||
|
DROP TABLE currencies, payments, sub_tasks;
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -46,3 +46,267 @@ a
|
|||||||
2001
|
2001
|
||||||
drop table t1;
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
#
|
||||||
|
# Bug #49480: WHERE using YEAR columns returns unexpected results
|
||||||
|
#
|
||||||
|
CREATE TABLE t2(yy YEAR(2), c2 CHAR(4));
|
||||||
|
CREATE TABLE t4(yyyy YEAR(4), c4 CHAR(4));
|
||||||
|
INSERT INTO t2 (c2) VALUES (NULL),(1970),(1999),(2000),(2001),(2069);
|
||||||
|
INSERT INTO t4 (c4) SELECT c2 FROM t2;
|
||||||
|
UPDATE t2 SET yy = c2;
|
||||||
|
UPDATE t4 SET yyyy = c4;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
yy c2
|
||||||
|
NULL NULL
|
||||||
|
70 1970
|
||||||
|
99 1999
|
||||||
|
00 2000
|
||||||
|
01 2001
|
||||||
|
69 2069
|
||||||
|
SELECT * FROM t4;
|
||||||
|
yyyy c4
|
||||||
|
NULL NULL
|
||||||
|
1970 1970
|
||||||
|
1999 1999
|
||||||
|
2000 2000
|
||||||
|
2001 2001
|
||||||
|
2069 2069
|
||||||
|
# Comparison of YEAR(2) with YEAR(4)
|
||||||
|
SELECT * FROM t2, t4 WHERE yy = yyyy;
|
||||||
|
yy c2 yyyy c4
|
||||||
|
70 1970 1970 1970
|
||||||
|
99 1999 1999 1999
|
||||||
|
00 2000 2000 2000
|
||||||
|
01 2001 2001 2001
|
||||||
|
69 2069 2069 2069
|
||||||
|
SELECT * FROM t2, t4 WHERE yy <=> yyyy;
|
||||||
|
yy c2 yyyy c4
|
||||||
|
NULL NULL NULL NULL
|
||||||
|
70 1970 1970 1970
|
||||||
|
99 1999 1999 1999
|
||||||
|
00 2000 2000 2000
|
||||||
|
01 2001 2001 2001
|
||||||
|
69 2069 2069 2069
|
||||||
|
SELECT * FROM t2, t4 WHERE yy < yyyy;
|
||||||
|
yy c2 yyyy c4
|
||||||
|
70 1970 1999 1999
|
||||||
|
70 1970 2000 2000
|
||||||
|
99 1999 2000 2000
|
||||||
|
70 1970 2001 2001
|
||||||
|
99 1999 2001 2001
|
||||||
|
00 2000 2001 2001
|
||||||
|
70 1970 2069 2069
|
||||||
|
99 1999 2069 2069
|
||||||
|
00 2000 2069 2069
|
||||||
|
01 2001 2069 2069
|
||||||
|
SELECT * FROM t2, t4 WHERE yy > yyyy;
|
||||||
|
yy c2 yyyy c4
|
||||||
|
99 1999 1970 1970
|
||||||
|
00 2000 1970 1970
|
||||||
|
01 2001 1970 1970
|
||||||
|
69 2069 1970 1970
|
||||||
|
00 2000 1999 1999
|
||||||
|
01 2001 1999 1999
|
||||||
|
69 2069 1999 1999
|
||||||
|
01 2001 2000 2000
|
||||||
|
69 2069 2000 2000
|
||||||
|
69 2069 2001 2001
|
||||||
|
# Comparison of YEAR(2) with YEAR(2)
|
||||||
|
SELECT * FROM t2 a, t2 b WHERE a.yy = b.yy;
|
||||||
|
yy c2 yy c2
|
||||||
|
70 1970 70 1970
|
||||||
|
99 1999 99 1999
|
||||||
|
00 2000 00 2000
|
||||||
|
01 2001 01 2001
|
||||||
|
69 2069 69 2069
|
||||||
|
SELECT * FROM t2 a, t2 b WHERE a.yy <=> b.yy;
|
||||||
|
yy c2 yy c2
|
||||||
|
NULL NULL NULL NULL
|
||||||
|
70 1970 70 1970
|
||||||
|
99 1999 99 1999
|
||||||
|
00 2000 00 2000
|
||||||
|
01 2001 01 2001
|
||||||
|
69 2069 69 2069
|
||||||
|
SELECT * FROM t2 a, t2 b WHERE a.yy < b.yy;
|
||||||
|
yy c2 yy c2
|
||||||
|
70 1970 99 1999
|
||||||
|
70 1970 00 2000
|
||||||
|
99 1999 00 2000
|
||||||
|
70 1970 01 2001
|
||||||
|
99 1999 01 2001
|
||||||
|
00 2000 01 2001
|
||||||
|
70 1970 69 2069
|
||||||
|
99 1999 69 2069
|
||||||
|
00 2000 69 2069
|
||||||
|
01 2001 69 2069
|
||||||
|
# Comparison of YEAR(4) with YEAR(4)
|
||||||
|
SELECT * FROM t4 a, t4 b WHERE a.yyyy = b.yyyy;
|
||||||
|
yyyy c4 yyyy c4
|
||||||
|
1970 1970 1970 1970
|
||||||
|
1999 1999 1999 1999
|
||||||
|
2000 2000 2000 2000
|
||||||
|
2001 2001 2001 2001
|
||||||
|
2069 2069 2069 2069
|
||||||
|
SELECT * FROM t4 a, t4 b WHERE a.yyyy <=> b.yyyy;
|
||||||
|
yyyy c4 yyyy c4
|
||||||
|
NULL NULL NULL NULL
|
||||||
|
1970 1970 1970 1970
|
||||||
|
1999 1999 1999 1999
|
||||||
|
2000 2000 2000 2000
|
||||||
|
2001 2001 2001 2001
|
||||||
|
2069 2069 2069 2069
|
||||||
|
SELECT * FROM t4 a, t4 b WHERE a.yyyy < b.yyyy;
|
||||||
|
yyyy c4 yyyy c4
|
||||||
|
1970 1970 1999 1999
|
||||||
|
1970 1970 2000 2000
|
||||||
|
1999 1999 2000 2000
|
||||||
|
1970 1970 2001 2001
|
||||||
|
1999 1999 2001 2001
|
||||||
|
2000 2000 2001 2001
|
||||||
|
1970 1970 2069 2069
|
||||||
|
1999 1999 2069 2069
|
||||||
|
2000 2000 2069 2069
|
||||||
|
2001 2001 2069 2069
|
||||||
|
# Comparison with constants:
|
||||||
|
SELECT * FROM t2 WHERE yy = NULL;
|
||||||
|
yy c2
|
||||||
|
SELECT * FROM t4 WHERE yyyy = NULL;
|
||||||
|
yyyy c4
|
||||||
|
SELECT * FROM t2 WHERE yy <=> NULL;
|
||||||
|
yy c2
|
||||||
|
NULL NULL
|
||||||
|
SELECT * FROM t4 WHERE yyyy <=> NULL;
|
||||||
|
yyyy c4
|
||||||
|
NULL NULL
|
||||||
|
SELECT * FROM t2 WHERE yy < NULL;
|
||||||
|
yy c2
|
||||||
|
SELECT * FROM t2 WHERE yy > NULL;
|
||||||
|
yy c2
|
||||||
|
SELECT * FROM t2 WHERE yy = NOW();
|
||||||
|
yy c2
|
||||||
|
SELECT * FROM t4 WHERE yyyy = NOW();
|
||||||
|
yyyy c4
|
||||||
|
SELECT * FROM t2 WHERE yy = 99;
|
||||||
|
yy c2
|
||||||
|
99 1999
|
||||||
|
SELECT * FROM t2 WHERE 99 = yy;
|
||||||
|
yy c2
|
||||||
|
99 1999
|
||||||
|
SELECT * FROM t4 WHERE yyyy = 99;
|
||||||
|
yyyy c4
|
||||||
|
1999 1999
|
||||||
|
SELECT * FROM t2 WHERE yy = 'test';
|
||||||
|
yy c2
|
||||||
|
00 2000
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect DOUBLE value: 'test'
|
||||||
|
SELECT * FROM t4 WHERE yyyy = 'test';
|
||||||
|
yyyy c4
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect DOUBLE value: 'test'
|
||||||
|
SELECT * FROM t2 WHERE yy = '1999';
|
||||||
|
yy c2
|
||||||
|
99 1999
|
||||||
|
SELECT * FROM t4 WHERE yyyy = '1999';
|
||||||
|
yyyy c4
|
||||||
|
1999 1999
|
||||||
|
SELECT * FROM t2 WHERE yy = 1999;
|
||||||
|
yy c2
|
||||||
|
99 1999
|
||||||
|
SELECT * FROM t4 WHERE yyyy = 1999;
|
||||||
|
yyyy c4
|
||||||
|
1999 1999
|
||||||
|
SELECT * FROM t2 WHERE yy = 1999.1;
|
||||||
|
yy c2
|
||||||
|
99 1999
|
||||||
|
SELECT * FROM t4 WHERE yyyy = 1999.1;
|
||||||
|
yyyy c4
|
||||||
|
1999 1999
|
||||||
|
SELECT * FROM t2 WHERE yy = 1998.9;
|
||||||
|
yy c2
|
||||||
|
99 1999
|
||||||
|
SELECT * FROM t4 WHERE yyyy = 1998.9;
|
||||||
|
yyyy c4
|
||||||
|
1999 1999
|
||||||
|
# Coverage tests for YEAR with zero/2000 constants:
|
||||||
|
SELECT * FROM t2 WHERE yy = 0;
|
||||||
|
yy c2
|
||||||
|
00 2000
|
||||||
|
SELECT * FROM t2 WHERE yy = '0';
|
||||||
|
yy c2
|
||||||
|
00 2000
|
||||||
|
SELECT * FROM t2 WHERE yy = '0000';
|
||||||
|
yy c2
|
||||||
|
00 2000
|
||||||
|
SELECT * FROM t2 WHERE yy = '2000';
|
||||||
|
yy c2
|
||||||
|
00 2000
|
||||||
|
SELECT * FROM t2 WHERE yy = 2000;
|
||||||
|
yy c2
|
||||||
|
00 2000
|
||||||
|
SELECT * FROM t4 WHERE yyyy = 0;
|
||||||
|
yyyy c4
|
||||||
|
SELECT * FROM t4 WHERE yyyy = '0';
|
||||||
|
yyyy c4
|
||||||
|
2000 2000
|
||||||
|
SELECT * FROM t4 WHERE yyyy = '0000';
|
||||||
|
yyyy c4
|
||||||
|
SELECT * FROM t4 WHERE yyyy = '2000';
|
||||||
|
yyyy c4
|
||||||
|
2000 2000
|
||||||
|
SELECT * FROM t4 WHERE yyyy = 2000;
|
||||||
|
yyyy c4
|
||||||
|
2000 2000
|
||||||
|
# Comparison with constants those are out of YEAR range
|
||||||
|
# (coverage test for backward compatibility)
|
||||||
|
SELECT COUNT(yy) FROM t2;
|
||||||
|
COUNT(yy)
|
||||||
|
5
|
||||||
|
SELECT COUNT(yyyy) FROM t4;
|
||||||
|
COUNT(yyyy)
|
||||||
|
5
|
||||||
|
SELECT COUNT(*) FROM t2 WHERE yy = -1;
|
||||||
|
COUNT(*)
|
||||||
|
0
|
||||||
|
SELECT COUNT(*) FROM t4 WHERE yyyy > -1;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
SELECT COUNT(*) FROM t2 WHERE yy > -1000000000000000000;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
SELECT COUNT(*) FROM t4 WHERE yyyy > -1000000000000000000;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
SELECT COUNT(*) FROM t2 WHERE yy < 2156;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
SELECT COUNT(*) FROM t4 WHERE yyyy < 2156;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
SELECT COUNT(*) FROM t2 WHERE yy < 1000000000000000000;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
SELECT COUNT(*) FROM t4 WHERE yyyy < 1000000000000000000;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
SELECT * FROM t2 WHERE yy < 123;
|
||||||
|
yy c2
|
||||||
|
70 1970
|
||||||
|
99 1999
|
||||||
|
00 2000
|
||||||
|
01 2001
|
||||||
|
69 2069
|
||||||
|
SELECT * FROM t2 WHERE yy > 123;
|
||||||
|
yy c2
|
||||||
|
SELECT * FROM t4 WHERE yyyy < 123;
|
||||||
|
yyyy c4
|
||||||
|
SELECT * FROM t4 WHERE yyyy > 123;
|
||||||
|
yyyy c4
|
||||||
|
1970 1970
|
||||||
|
1999 1999
|
||||||
|
2000 2000
|
||||||
|
2001 2001
|
||||||
|
2069 2069
|
||||||
|
DROP TABLE t2, t4;
|
||||||
|
#
|
||||||
|
End of 5.1 tests
|
||||||
|
BIN
mysql-test/std_data/bug47012.ARM
Normal file
BIN
mysql-test/std_data/bug47012.ARM
Normal file
Binary file not shown.
BIN
mysql-test/std_data/bug47012.ARZ
Normal file
BIN
mysql-test/std_data/bug47012.ARZ
Normal file
Binary file not shown.
BIN
mysql-test/std_data/bug47012.frm
Normal file
BIN
mysql-test/std_data/bug47012.frm
Normal file
Binary file not shown.
@ -1,3 +1,4 @@
|
|||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
create table t1 (a int) engine=innodb;
|
create table t1 (a int) engine=innodb;
|
||||||
create table t2 (a int) engine=myisam;
|
create table t2 (a int) engine=myisam;
|
||||||
@ -224,6 +225,8 @@ create table t0 (n int);
|
|||||||
insert t0 select * from t1;
|
insert t0 select * from t1;
|
||||||
set autocommit=1;
|
set autocommit=1;
|
||||||
insert into t0 select GET_LOCK("lock1",null);
|
insert into t0 select GET_LOCK("lock1",null);
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
set autocommit=0;
|
set autocommit=0;
|
||||||
create table t2 (n int) engine=innodb;
|
create table t2 (n int) engine=innodb;
|
||||||
insert into t2 values (3);
|
insert into t2 values (3);
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
DROP TABLE IF EXISTS t2;
|
DROP TABLE IF EXISTS t2;
|
||||||
set @saved_global_binlog_format = @@global.binlog_format;
|
set @saved_global_binlog_format = @@global.binlog_format;
|
||||||
@ -29,6 +30,8 @@ SELECT RELEASE_LOCK('Bug#34306');
|
|||||||
RELEASE_LOCK('Bug#34306')
|
RELEASE_LOCK('Bug#34306')
|
||||||
1
|
1
|
||||||
# con2
|
# con2
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
SELECT RELEASE_LOCK('Bug#34306');
|
SELECT RELEASE_LOCK('Bug#34306');
|
||||||
RELEASE_LOCK('Bug#34306')
|
RELEASE_LOCK('Bug#34306')
|
||||||
1
|
1
|
||||||
|
@ -327,4 +327,86 @@ Warnings:
|
|||||||
Note 1592 Statement may not be safe to log in statement format.
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
SET @@SESSION.SQL_MODE = @save_sql_mode;
|
SET @@SESSION.SQL_MODE = @save_sql_mode;
|
||||||
|
CREATE TABLE t1 (a VARCHAR(1000));
|
||||||
|
INSERT INTO t1 VALUES (CURRENT_USER());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (FOUND_ROWS());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (GET_LOCK('tmp', 1));
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (IS_FREE_LOCK('tmp'));
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (IS_USED_LOCK('tmp'));
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (LOAD_FILE('../../std_data/words2.dat'));
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (MASTER_POS_WAIT('dummy arg', 4711, 1));
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (RELEASE_LOCK('tmp'));
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (ROW_COUNT());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (SESSION_USER());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (SLEEP(1));
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (SYSDATE());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (SYSTEM_USER());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (USER());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (UUID());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (UUID_SHORT());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
INSERT INTO t1 VALUES (VERSION());
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
|
DELETE FROM t1;
|
||||||
|
SET TIMESTAMP=1000000;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(CURDATE()),
|
||||||
|
(CURRENT_DATE()),
|
||||||
|
(CURRENT_TIME()),
|
||||||
|
(CURRENT_TIMESTAMP()),
|
||||||
|
(CURTIME()),
|
||||||
|
(LOCALTIME()),
|
||||||
|
(LOCALTIMESTAMP()),
|
||||||
|
(NOW()),
|
||||||
|
(UNIX_TIMESTAMP()),
|
||||||
|
(UTC_DATE()),
|
||||||
|
(UTC_TIME()),
|
||||||
|
(UTC_TIMESTAMP());
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1970-01-12
|
||||||
|
1970-01-12
|
||||||
|
16:46:40
|
||||||
|
1970-01-12 16:46:40
|
||||||
|
16:46:40
|
||||||
|
1970-01-12 16:46:40
|
||||||
|
1970-01-12 16:46:40
|
||||||
|
1970-01-12 16:46:40
|
||||||
|
1000000
|
||||||
|
1970-01-12
|
||||||
|
13:46:40
|
||||||
|
1970-01-12 13:46:40
|
||||||
|
DROP TABLE t1;
|
||||||
"End of tests"
|
"End of tests"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-- source include/have_innodb.inc
|
-- source include/have_innodb.inc
|
||||||
-- source include/have_binlog_format_mixed_or_statement.inc
|
-- source include/have_binlog_format_statement.inc
|
||||||
|
|
||||||
# You cannot use `KILL' with the Embedded MySQL Server library,
|
# You cannot use `KILL' with the Embedded MySQL Server library,
|
||||||
# because the embedded server merely runs inside the threads of the host
|
# because the embedded server merely runs inside the threads of the host
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
# For both statement and row based bin logs 9/19/2005 [jbm]
|
# For both statement and row based bin logs 9/19/2005 [jbm]
|
||||||
|
|
||||||
-- source include/have_binlog_format_statement.inc
|
-- source include/have_binlog_format_statement.inc
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
|
|
||||||
-- source extra/binlog_tests/mix_innodb_myisam_binlog.test
|
-- source extra/binlog_tests/mix_innodb_myisam_binlog.test
|
||||||
|
|
||||||
set @@session.binlog_format=statement;
|
set @@session.binlog_format=statement;
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
--source include/have_log_bin.inc
|
--source include/have_log_bin.inc
|
||||||
--source include/have_binlog_format_row_or_statement.inc
|
# Test sets its own binlog_format, so we restrict it to run only once
|
||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
|
|
||||||
# Get rid of previous tests binlog
|
# Get rid of previous tests binlog
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
|
@ -388,4 +388,56 @@ DELETE FROM t1 LIMIT 1;
|
|||||||
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
SET @@SESSION.SQL_MODE = @save_sql_mode;
|
SET @@SESSION.SQL_MODE = @save_sql_mode;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#47995: Mark user functions as unsafe
|
||||||
|
#
|
||||||
|
# Test that the system functions that are supposed to be marked unsafe
|
||||||
|
# generate a warning. Each INSERT statement below should generate a
|
||||||
|
# warning.
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(1000));
|
||||||
|
INSERT INTO t1 VALUES (CURRENT_USER()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (FOUND_ROWS()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (GET_LOCK('tmp', 1));
|
||||||
|
INSERT INTO t1 VALUES (IS_FREE_LOCK('tmp'));
|
||||||
|
INSERT INTO t1 VALUES (IS_USED_LOCK('tmp'));
|
||||||
|
INSERT INTO t1 VALUES (LOAD_FILE('../../std_data/words2.dat')); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (MASTER_POS_WAIT('dummy arg', 4711, 1));
|
||||||
|
INSERT INTO t1 VALUES (RELEASE_LOCK('tmp'));
|
||||||
|
INSERT INTO t1 VALUES (ROW_COUNT()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (SESSION_USER()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (SLEEP(1));
|
||||||
|
INSERT INTO t1 VALUES (SYSDATE());
|
||||||
|
INSERT INTO t1 VALUES (SYSTEM_USER()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (USER()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (UUID()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (UUID_SHORT()); #marked unsafe before BUG#47995
|
||||||
|
INSERT INTO t1 VALUES (VERSION());
|
||||||
|
DELETE FROM t1;
|
||||||
|
|
||||||
|
# Since we replicate the TIMESTAMP variable, functions affected by the
|
||||||
|
# TIMESTAMP variable are safe to replicate. So we check that the
|
||||||
|
# following following functions depend on the TIMESTAMP variable and
|
||||||
|
# don't generate a warning.
|
||||||
|
|
||||||
|
SET TIMESTAMP=1000000;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(CURDATE()),
|
||||||
|
(CURRENT_DATE()),
|
||||||
|
(CURRENT_TIME()),
|
||||||
|
(CURRENT_TIMESTAMP()),
|
||||||
|
(CURTIME()),
|
||||||
|
(LOCALTIME()),
|
||||||
|
(LOCALTIMESTAMP()),
|
||||||
|
(NOW()),
|
||||||
|
(UNIX_TIMESTAMP()),
|
||||||
|
(UTC_DATE()),
|
||||||
|
(UTC_TIME()),
|
||||||
|
(UTC_TIMESTAMP());
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo "End of tests"
|
--echo "End of tests"
|
||||||
|
@ -968,6 +968,7 @@ create index t1u on t1 (u(1));
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
set global innodb_file_per_table=0;
|
set global innodb_file_per_table=0;
|
||||||
set global innodb_file_format=Antelope;
|
set global innodb_file_format=Antelope;
|
||||||
|
set global innodb_file_format_check=Antelope;
|
||||||
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
|
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
|
||||||
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
|
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
|
9
mysql-test/suite/innodb/r/innodb_bug46676.result
Normal file
9
mysql-test/suite/innodb/r/innodb_bug46676.result
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
SET foreign_key_checks=0;
|
||||||
|
CREATE TABLE t1 (id int, foreign key (id) references t2(id)) ENGINE=INNODB;
|
||||||
|
CREATE TABLE t2 (id int, foreign key (id) references t1(id)) ENGINE=INNODB;
|
||||||
|
SET foreign_key_checks=1;
|
||||||
|
SELECT COUNT(*) FROM information_schema.key_column_usage WHERE REFERENCED_TABLE_NAME in ('t1', 't2');
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
SET foreign_key_checks=0;
|
||||||
|
DROP TABLE t1, t2;
|
24
mysql-test/suite/innodb/r/innodb_bug47167.result
Normal file
24
mysql-test/suite/innodb/r/innodb_bug47167.result
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
set @old_innodb_file_format_check=@@innodb_file_format_check;
|
||||||
|
select @old_innodb_file_format_check;
|
||||||
|
@old_innodb_file_format_check
|
||||||
|
Antelope
|
||||||
|
set global innodb_file_format_check = Barracuda;
|
||||||
|
select @@innodb_file_format_check;
|
||||||
|
@@innodb_file_format_check
|
||||||
|
Barracuda
|
||||||
|
set global innodb_file_format_check = DEFAULT;
|
||||||
|
select @@innodb_file_format_check;
|
||||||
|
@@innodb_file_format_check
|
||||||
|
Barracuda
|
||||||
|
set global innodb_file_format_check = @old_innodb_file_format_check;
|
||||||
|
select @@innodb_file_format_check;
|
||||||
|
@@innodb_file_format_check
|
||||||
|
Antelope
|
||||||
|
set global innodb_file_format_check = cheetah;
|
||||||
|
ERROR HY000: Incorrect arguments to SET
|
||||||
|
set global innodb_file_format_check = Bear;
|
||||||
|
ERROR HY000: Incorrect arguments to SET
|
||||||
|
set global innodb_file_format_check = on;
|
||||||
|
ERROR HY000: Incorrect arguments to SET
|
||||||
|
set global innodb_file_format_check = off;
|
||||||
|
ERROR HY000: Incorrect arguments to SET
|
@ -1 +1 @@
|
|||||||
--innodb_lock_wait_timeout=2
|
--loose-innodb_lock_wait_timeout=2
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
-- source include/have_innodb.inc
|
-- source include/have_innodb.inc
|
||||||
|
|
||||||
|
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
||||||
|
|
||||||
create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb;
|
create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb;
|
||||||
insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak');
|
insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak');
|
||||||
commit;
|
commit;
|
||||||
@ -398,6 +400,7 @@ create index t1u on t1 (u(1));
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
eval set global innodb_file_per_table=$per_table;
|
eval set global innodb_file_per_table=$per_table;
|
||||||
eval set global innodb_file_format=$format;
|
eval set global innodb_file_format=$format;
|
||||||
|
eval set global innodb_file_format_check=$format;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test to check whether CREATE INDEX handles implicit foreign key
|
# Test to check whether CREATE INDEX handles implicit foreign key
|
||||||
@ -532,3 +535,10 @@ disconnect a;
|
|||||||
disconnect b;
|
disconnect b;
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# restore environment to the state it was before this test execution
|
||||||
|
#
|
||||||
|
|
||||||
|
-- disable_query_log
|
||||||
|
eval SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
|
||||||
|
16
mysql-test/suite/innodb/t/innodb_bug46676.test
Normal file
16
mysql-test/suite/innodb/t/innodb_bug46676.test
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# This is the test for bug 46676: mysqld got exception 0xc0000005
|
||||||
|
# It is reproducible with InnoDB plugin 1.0.4 + MySQL 5.1.37.
|
||||||
|
# But no longer reproducible after MySQL 5.1.38 (with plugin 1.0.5).
|
||||||
|
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
SET foreign_key_checks=0;
|
||||||
|
CREATE TABLE t1 (id int, foreign key (id) references t2(id)) ENGINE=INNODB;
|
||||||
|
CREATE TABLE t2 (id int, foreign key (id) references t1(id)) ENGINE=INNODB;
|
||||||
|
SET foreign_key_checks=1;
|
||||||
|
|
||||||
|
# Server crashes
|
||||||
|
SELECT COUNT(*) FROM information_schema.key_column_usage WHERE REFERENCED_TABLE_NAME in ('t1', 't2');
|
||||||
|
|
||||||
|
SET foreign_key_checks=0;
|
||||||
|
DROP TABLE t1, t2;
|
46
mysql-test/suite/innodb/t/innodb_bug47167.test
Normal file
46
mysql-test/suite/innodb/t/innodb_bug47167.test
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# This is the unit test for bug *47167.
|
||||||
|
# It tests setting the global variable
|
||||||
|
# "innodb_file_format_check" with a
|
||||||
|
# user-Defined Variable.
|
||||||
|
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
-- source suite/innodb/include/have_innodb_plugin.inc
|
||||||
|
|
||||||
|
# Save the value (Antelope) in 'innodb_file_format_check' to
|
||||||
|
# 'old_innodb_file_format_check'
|
||||||
|
set @old_innodb_file_format_check=@@innodb_file_format_check;
|
||||||
|
|
||||||
|
# @old_innodb_file_format_check shall have the value of 'Antelope'
|
||||||
|
select @old_innodb_file_format_check;
|
||||||
|
|
||||||
|
# Reset the value in 'innodb_file_format_check' to 'Barracuda'
|
||||||
|
set global innodb_file_format_check = Barracuda;
|
||||||
|
|
||||||
|
select @@innodb_file_format_check;
|
||||||
|
|
||||||
|
# Set 'innodb_file_format_check' to its default value, which
|
||||||
|
# is the latest file format supported in the current release.
|
||||||
|
set global innodb_file_format_check = DEFAULT;
|
||||||
|
|
||||||
|
select @@innodb_file_format_check;
|
||||||
|
|
||||||
|
# Put the saved value back to 'innodb_file_format_check'
|
||||||
|
set global innodb_file_format_check = @old_innodb_file_format_check;
|
||||||
|
|
||||||
|
# Check whether 'innodb_file_format_check' get its original value.
|
||||||
|
select @@innodb_file_format_check;
|
||||||
|
|
||||||
|
# Following are negative tests, all should fail.
|
||||||
|
--disable_warnings
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
set global innodb_file_format_check = cheetah;
|
||||||
|
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
set global innodb_file_format_check = Bear;
|
||||||
|
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
set global innodb_file_format_check = on;
|
||||||
|
|
||||||
|
--error ER_WRONG_ARGUMENTS
|
||||||
|
set global innodb_file_format_check = off;
|
||||||
|
--enable_warnings
|
@ -1,2 +1 @@
|
|||||||
--secure-file-priv=""
|
--secure-file-priv="../../std_data"
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
# General not engine specific settings and requirements
|
# General not engine specific settings and requirements
|
||||||
|
|
||||||
|
--source include/big_test.inc
|
||||||
|
|
||||||
##### Options, for debugging support #####
|
##### Options, for debugging support #####
|
||||||
let $debug= 0;
|
let $debug= 0;
|
||||||
let $with_partitioning= 1;
|
let $with_partitioning= 1;
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
# any of the variables.
|
# any of the variables.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
--source include/big_test.inc
|
||||||
|
|
||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
# General not engine specific settings and requirements
|
# General not engine specific settings and requirements
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
# any of the variables.
|
# any of the variables.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
--source include/big_test.inc
|
||||||
|
|
||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
# General not engine specific settings and requirements
|
# General not engine specific settings and requirements
|
||||||
|
|
||||||
|
@ -22,6 +22,8 @@
|
|||||||
# any of the variables.
|
# any of the variables.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
--source include/big_test.inc
|
||||||
|
|
||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
# General not engine specific settings and requirements
|
# General not engine specific settings and requirements
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ reset master;
|
|||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
create table t1 (a int primary key);
|
create table t1 (a int primary key);
|
||||||
create table t4 (a int primary key);
|
create table t4 (a int primary key);
|
||||||
insert into t1 values (1),(1);
|
insert into t1 values (1),(1);
|
||||||
|
@ -404,7 +404,11 @@ STOP SLAVE;
|
|||||||
RESET SLAVE;
|
RESET SLAVE;
|
||||||
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
||||||
d TIMESTAMP,
|
d TIMESTAMP,
|
||||||
e INT NOT NULL) ENGINE='InnoDB';
|
e INT NOT NULL,
|
||||||
|
f text not null,
|
||||||
|
g text,
|
||||||
|
h blob not null,
|
||||||
|
i blob) ENGINE='InnoDB';
|
||||||
*** Create t9 on Master ***
|
*** Create t9 on Master ***
|
||||||
CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||||
) ENGINE='InnoDB';
|
) ENGINE='InnoDB';
|
||||||
@ -415,47 +419,11 @@ START SLAVE;
|
|||||||
set @b1 = 'b1b1b1b1';
|
set @b1 = 'b1b1b1b1';
|
||||||
set @b1 = concat(@b1,@b1);
|
set @b1 = concat(@b1,@b1);
|
||||||
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||||
SHOW SLAVE STATUS;
|
select * from t9;
|
||||||
Slave_IO_State #
|
a b c d e f g h i
|
||||||
Master_Host 127.0.0.1
|
1 b1b1b1b1b1b1b1b1 Kyle 0000-00-00 00:00:00 0 NULL NULL
|
||||||
Master_User root
|
2 b1b1b1b1b1b1b1b1 JOE 0000-00-00 00:00:00 0 NULL NULL
|
||||||
Master_Port #
|
3 b1b1b1b1b1b1b1b1 QA 0000-00-00 00:00:00 0 NULL NULL
|
||||||
Connect_Retry 1
|
|
||||||
Master_Log_File master-bin.000001
|
|
||||||
Read_Master_Log_Pos #
|
|
||||||
Relay_Log_File #
|
|
||||||
Relay_Log_Pos #
|
|
||||||
Relay_Master_Log_File master-bin.000001
|
|
||||||
Slave_IO_Running Yes
|
|
||||||
Slave_SQL_Running No
|
|
||||||
Replicate_Do_DB
|
|
||||||
Replicate_Ignore_DB
|
|
||||||
Replicate_Do_Table
|
|
||||||
Replicate_Ignore_Table #
|
|
||||||
Replicate_Wild_Do_Table
|
|
||||||
Replicate_Wild_Ignore_Table
|
|
||||||
Last_Errno 1364
|
|
||||||
Last_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 330
|
|
||||||
Skip_Counter 0
|
|
||||||
Exec_Master_Log_Pos #
|
|
||||||
Relay_Log_Space #
|
|
||||||
Until_Condition None
|
|
||||||
Until_Log_File
|
|
||||||
Until_Log_Pos 0
|
|
||||||
Master_SSL_Allowed No
|
|
||||||
Master_SSL_CA_File
|
|
||||||
Master_SSL_CA_Path
|
|
||||||
Master_SSL_Cert
|
|
||||||
Master_SSL_Cipher
|
|
||||||
Master_SSL_Key
|
|
||||||
Seconds_Behind_Master #
|
|
||||||
Master_SSL_Verify_Server_Cert No
|
|
||||||
Last_IO_Errno #
|
|
||||||
Last_IO_Error #
|
|
||||||
Last_SQL_Errno 1364
|
|
||||||
Last_SQL_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 330
|
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
|
||||||
START SLAVE;
|
|
||||||
*** Create t10 on slave ***
|
*** Create t10 on slave ***
|
||||||
STOP SLAVE;
|
STOP SLAVE;
|
||||||
RESET SLAVE;
|
RESET SLAVE;
|
||||||
|
@ -404,7 +404,11 @@ STOP SLAVE;
|
|||||||
RESET SLAVE;
|
RESET SLAVE;
|
||||||
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
||||||
d TIMESTAMP,
|
d TIMESTAMP,
|
||||||
e INT NOT NULL) ENGINE='MyISAM';
|
e INT NOT NULL,
|
||||||
|
f text not null,
|
||||||
|
g text,
|
||||||
|
h blob not null,
|
||||||
|
i blob) ENGINE='MyISAM';
|
||||||
*** Create t9 on Master ***
|
*** Create t9 on Master ***
|
||||||
CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
||||||
) ENGINE='MyISAM';
|
) ENGINE='MyISAM';
|
||||||
@ -415,47 +419,11 @@ START SLAVE;
|
|||||||
set @b1 = 'b1b1b1b1';
|
set @b1 = 'b1b1b1b1';
|
||||||
set @b1 = concat(@b1,@b1);
|
set @b1 = concat(@b1,@b1);
|
||||||
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||||
SHOW SLAVE STATUS;
|
select * from t9;
|
||||||
Slave_IO_State #
|
a b c d e f g h i
|
||||||
Master_Host 127.0.0.1
|
1 b1b1b1b1b1b1b1b1 Kyle 0000-00-00 00:00:00 0 NULL NULL
|
||||||
Master_User root
|
2 b1b1b1b1b1b1b1b1 JOE 0000-00-00 00:00:00 0 NULL NULL
|
||||||
Master_Port #
|
3 b1b1b1b1b1b1b1b1 QA 0000-00-00 00:00:00 0 NULL NULL
|
||||||
Connect_Retry 1
|
|
||||||
Master_Log_File master-bin.000001
|
|
||||||
Read_Master_Log_Pos #
|
|
||||||
Relay_Log_File #
|
|
||||||
Relay_Log_Pos #
|
|
||||||
Relay_Master_Log_File master-bin.000001
|
|
||||||
Slave_IO_Running Yes
|
|
||||||
Slave_SQL_Running No
|
|
||||||
Replicate_Do_DB
|
|
||||||
Replicate_Ignore_DB
|
|
||||||
Replicate_Do_Table
|
|
||||||
Replicate_Ignore_Table #
|
|
||||||
Replicate_Wild_Do_Table
|
|
||||||
Replicate_Wild_Ignore_Table
|
|
||||||
Last_Errno 1364
|
|
||||||
Last_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 330
|
|
||||||
Skip_Counter 0
|
|
||||||
Exec_Master_Log_Pos #
|
|
||||||
Relay_Log_Space #
|
|
||||||
Until_Condition None
|
|
||||||
Until_Log_File
|
|
||||||
Until_Log_Pos 0
|
|
||||||
Master_SSL_Allowed No
|
|
||||||
Master_SSL_CA_File
|
|
||||||
Master_SSL_CA_Path
|
|
||||||
Master_SSL_Cert
|
|
||||||
Master_SSL_Cipher
|
|
||||||
Master_SSL_Key
|
|
||||||
Seconds_Behind_Master #
|
|
||||||
Master_SSL_Verify_Server_Cert No
|
|
||||||
Last_IO_Errno #
|
|
||||||
Last_IO_Error #
|
|
||||||
Last_SQL_Errno 1364
|
|
||||||
Last_SQL_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 330
|
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
|
||||||
START SLAVE;
|
|
||||||
*** Create t10 on slave ***
|
*** Create t10 on slave ***
|
||||||
STOP SLAVE;
|
STOP SLAVE;
|
||||||
RESET SLAVE;
|
RESET SLAVE;
|
||||||
|
@ -4,6 +4,7 @@ reset master;
|
|||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
create table t1(n int);
|
create table t1(n int);
|
||||||
insert into t1 values(get_lock("lock",2));
|
insert into t1 values(get_lock("lock",2));
|
||||||
select get_lock("lock",2);
|
select get_lock("lock",2);
|
||||||
|
17
mysql-test/suite/rpl/r/rpl_loaddata_symlink.result
Normal file
17
mysql-test/suite/rpl/r/rpl_loaddata_symlink.result
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
create table t1(a int not null auto_increment, b int, primary key(a) );
|
||||||
|
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 10
|
||||||
|
2 15
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 10
|
||||||
|
2 15
|
||||||
|
drop table t1;
|
26
mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result
Normal file
26
mysql-test/suite/rpl/r/rpl_nondeterministic_functions.result
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
CREATE TABLE t1 (a VARCHAR(1000));
|
||||||
|
INSERT INTO t1 VALUES (CONNECTION_ID());
|
||||||
|
INSERT INTO t1 VALUES (CONNECTION_ID());
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(CURDATE()),
|
||||||
|
(CURRENT_DATE()),
|
||||||
|
(CURRENT_TIME()),
|
||||||
|
(CURRENT_TIMESTAMP()),
|
||||||
|
(CURTIME()),
|
||||||
|
(LOCALTIME()),
|
||||||
|
(LOCALTIMESTAMP()),
|
||||||
|
(NOW()),
|
||||||
|
(UNIX_TIMESTAMP()),
|
||||||
|
(UTC_DATE()),
|
||||||
|
(UTC_TIME()),
|
||||||
|
(UTC_TIMESTAMP());
|
||||||
|
INSERT INTO t1 VALUES (RAND());
|
||||||
|
INSERT INTO t1 VALUES (LAST_INSERT_ID());
|
||||||
|
Comparing tables master:test.t1 and slave:test.t1
|
||||||
|
DROP TABLE t1;
|
202
mysql-test/suite/rpl/r/rpl_not_null_innodb.result
Normal file
202
mysql-test/suite/rpl/r/rpl_not_null_innodb.result
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00',
|
||||||
|
`c` INT DEFAULT 500,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00',
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
************* EXECUTION WITH INSERTS *************
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1, null, 1);
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
INSERT INTO t1(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t1(a,c) VALUES (4, 4);
|
||||||
|
INSERT INTO t1(a) VALUES (5);
|
||||||
|
INSERT INTO t2(a,b) VALUES (1, null);
|
||||||
|
INSERT INTO t2(a,b) VALUES (2,'1111-11-11');
|
||||||
|
INSERT INTO t2(a) VALUES (3);
|
||||||
|
INSERT INTO t3(a,b) VALUES (1, null);
|
||||||
|
INSERT INTO t3(a,b) VALUES (2,'1111-11-11');
|
||||||
|
INSERT INTO t3(a) VALUES (3);
|
||||||
|
INSERT INTO t4(a,b,c) VALUES (1, null, 1);
|
||||||
|
INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
INSERT INTO t4(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t4(a,c) VALUES (4, 4);
|
||||||
|
INSERT INTO t4(a) VALUES (5);
|
||||||
|
************* SHOWING THE RESULT SETS WITH INSERTS *************
|
||||||
|
TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
Comparing tables master:test.t1 and slave:test.t1
|
||||||
|
Comparing tables master:test.t2 and slave:test.t2
|
||||||
|
TABLES t2 and t3 must be different.
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 1111-11-11
|
||||||
|
3 NULL
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 NULL 500
|
||||||
|
2 1111-11-11 500
|
||||||
|
3 NULL 500
|
||||||
|
SELECT * FROM t4 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 NULL 1
|
||||||
|
2 1111-11-11 2
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL 4
|
||||||
|
5 NULL NULL
|
||||||
|
SELECT * FROM t4 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 1111-11-11
|
||||||
|
3 NULL
|
||||||
|
4 NULL
|
||||||
|
5 NULL
|
||||||
|
************* EXECUTION WITH UPDATES and REPLACES *************
|
||||||
|
DELETE FROM t1;
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1);
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
UPDATE t1 set b= NULL, c= 300 where a= 1;
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300);
|
||||||
|
************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES *************
|
||||||
|
TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
Comparing tables master:test.t1 and slave:test.t1
|
||||||
|
************* CLEANING *************
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`a`)) ENGINE= Innodb;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`a`)) ENGINE= Innodb;
|
||||||
|
************* EXECUTION WITH INSERTS *************
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1, null, b'01');
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01');
|
||||||
|
INSERT INTO t1(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t1(a,c) VALUES (4, b'01');
|
||||||
|
INSERT INTO t1(a) VALUES (5);
|
||||||
|
************* SHOWING THE RESULT SETS WITH INSERTS *************
|
||||||
|
TABLES t1 and t2 must be different.
|
||||||
|
SELECT a,b+0,c+0 FROM t1 ORDER BY a;
|
||||||
|
a b+0 c+0
|
||||||
|
1 NULL 1
|
||||||
|
2 0 1
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL 1
|
||||||
|
5 NULL NULL
|
||||||
|
SELECT a,b+0,c+0 FROM t1 ORDER BY a;
|
||||||
|
a b+0 c+0
|
||||||
|
1 NULL 1
|
||||||
|
2 0 1
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL 1
|
||||||
|
5 NULL NULL
|
||||||
|
************* EXECUTION WITH UPDATES and REPLACES *************
|
||||||
|
DELETE FROM t1;
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01');
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01');
|
||||||
|
UPDATE t1 set b= NULL, c= b'00' where a= 1;
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00');
|
||||||
|
************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES *************
|
||||||
|
TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
Comparing tables master:test.t1 and slave:test.t1
|
||||||
|
DROP TABLE t1;
|
||||||
|
################################################################################
|
||||||
|
# NULL ---> NOT NULL (STRICT MODE)
|
||||||
|
# UNCOMMENT THIS AFTER FIXING BUG#43992
|
||||||
|
################################################################################
|
||||||
|
################################################################################
|
||||||
|
# NULL ---> NOT NULL (NON-STRICT MODE)
|
||||||
|
################################################################################
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
CREATE TABLE t1(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t2(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t3(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT NOT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT DEFAULT 500,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=Innodb DEFAULT CHARSET=LATIN1;
|
||||||
|
************* EXECUTION WITH INSERTS *************
|
||||||
|
INSERT INTO t1(a) VALUES (1);
|
||||||
|
INSERT INTO t1(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t1(a, b) VALUES (3, 1);
|
||||||
|
INSERT INTO t2(a) VALUES (1);
|
||||||
|
INSERT INTO t2(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t2(a, b) VALUES (3, 1);
|
||||||
|
INSERT INTO t3(a) VALUES (1);
|
||||||
|
INSERT INTO t3(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t3(a, b) VALUES (3, 1);
|
||||||
|
INSERT INTO t3(a, b) VALUES (4, 1);
|
||||||
|
REPLACE INTO t3(a, b) VALUES (5, null);
|
||||||
|
REPLACE INTO t3(a, b) VALUES (3, null);
|
||||||
|
UPDATE t3 SET b = NULL where a = 4;
|
||||||
|
************* SHOWING THE RESULT SETS *************
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 NULL
|
||||||
|
3 1
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 0 0
|
||||||
|
2 0 0
|
||||||
|
3 1 0
|
||||||
|
SELECT * FROM t2 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 NULL
|
||||||
|
3 1
|
||||||
|
SELECT * FROM t2 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 0 NULL
|
||||||
|
2 0 NULL
|
||||||
|
3 1 NULL
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 NULL
|
||||||
|
3 NULL
|
||||||
|
4 NULL
|
||||||
|
5 NULL
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 0 500
|
||||||
|
2 0 500
|
||||||
|
3 0 500
|
||||||
|
4 0 500
|
||||||
|
5 0 500
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
202
mysql-test/suite/rpl/r/rpl_not_null_myisam.result
Normal file
202
mysql-test/suite/rpl/r/rpl_not_null_myisam.result
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t3(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t4(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
CREATE TABLE t1(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
`c` INT DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t2(`a` INT, `b` DATE DEFAULT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t3(`a` INT, `b` DATE DEFAULT '0000-00-00',
|
||||||
|
`c` INT DEFAULT 500,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t4(`a` INT, `b` DATE DEFAULT '0000-00-00',
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
************* EXECUTION WITH INSERTS *************
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1, null, 1);
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
INSERT INTO t1(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t1(a,c) VALUES (4, 4);
|
||||||
|
INSERT INTO t1(a) VALUES (5);
|
||||||
|
INSERT INTO t2(a,b) VALUES (1, null);
|
||||||
|
INSERT INTO t2(a,b) VALUES (2,'1111-11-11');
|
||||||
|
INSERT INTO t2(a) VALUES (3);
|
||||||
|
INSERT INTO t3(a,b) VALUES (1, null);
|
||||||
|
INSERT INTO t3(a,b) VALUES (2,'1111-11-11');
|
||||||
|
INSERT INTO t3(a) VALUES (3);
|
||||||
|
INSERT INTO t4(a,b,c) VALUES (1, null, 1);
|
||||||
|
INSERT INTO t4(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
INSERT INTO t4(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t4(a,c) VALUES (4, 4);
|
||||||
|
INSERT INTO t4(a) VALUES (5);
|
||||||
|
************* SHOWING THE RESULT SETS WITH INSERTS *************
|
||||||
|
TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
Comparing tables master:test.t1 and slave:test.t1
|
||||||
|
Comparing tables master:test.t2 and slave:test.t2
|
||||||
|
TABLES t2 and t3 must be different.
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 1111-11-11
|
||||||
|
3 NULL
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 NULL 500
|
||||||
|
2 1111-11-11 500
|
||||||
|
3 NULL 500
|
||||||
|
SELECT * FROM t4 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 NULL 1
|
||||||
|
2 1111-11-11 2
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL 4
|
||||||
|
5 NULL NULL
|
||||||
|
SELECT * FROM t4 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 1111-11-11
|
||||||
|
3 NULL
|
||||||
|
4 NULL
|
||||||
|
5 NULL
|
||||||
|
************* EXECUTION WITH UPDATES and REPLACES *************
|
||||||
|
DELETE FROM t1;
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1,'1111-11-11', 1);
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2,'1111-11-11', 2);
|
||||||
|
UPDATE t1 set b= NULL, c= 300 where a= 1;
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2, NULL, 300);
|
||||||
|
************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES *************
|
||||||
|
TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
Comparing tables master:test.t1 and slave:test.t1
|
||||||
|
************* CLEANING *************
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
||||||
|
DROP TABLE t4;
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT NULL, `c` BIT DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`a`)) ENGINE= MyISAM;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
CREATE TABLE t1 (`a` INT, `b` BIT DEFAULT b'01', `c` BIT DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`a`)) ENGINE= MyISAM;
|
||||||
|
************* EXECUTION WITH INSERTS *************
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1, null, b'01');
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (2,b'00', b'01');
|
||||||
|
INSERT INTO t1(a,b) VALUES (3, null);
|
||||||
|
INSERT INTO t1(a,c) VALUES (4, b'01');
|
||||||
|
INSERT INTO t1(a) VALUES (5);
|
||||||
|
************* SHOWING THE RESULT SETS WITH INSERTS *************
|
||||||
|
TABLES t1 and t2 must be different.
|
||||||
|
SELECT a,b+0,c+0 FROM t1 ORDER BY a;
|
||||||
|
a b+0 c+0
|
||||||
|
1 NULL 1
|
||||||
|
2 0 1
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL 1
|
||||||
|
5 NULL NULL
|
||||||
|
SELECT a,b+0,c+0 FROM t1 ORDER BY a;
|
||||||
|
a b+0 c+0
|
||||||
|
1 NULL 1
|
||||||
|
2 0 1
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL 1
|
||||||
|
5 NULL NULL
|
||||||
|
************* EXECUTION WITH UPDATES and REPLACES *************
|
||||||
|
DELETE FROM t1;
|
||||||
|
INSERT INTO t1(a,b,c) VALUES (1,b'00', b'01');
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2,b'00',b'01');
|
||||||
|
UPDATE t1 set b= NULL, c= b'00' where a= 1;
|
||||||
|
REPLACE INTO t1(a,b,c) VALUES (2, NULL, b'00');
|
||||||
|
************* SHOWING THE RESULT SETS WITH UPDATES and REPLACES *************
|
||||||
|
TABLES t1 and t2 must be equal otherwise an error will be thrown.
|
||||||
|
Comparing tables master:test.t1 and slave:test.t1
|
||||||
|
DROP TABLE t1;
|
||||||
|
################################################################################
|
||||||
|
# NULL ---> NOT NULL (STRICT MODE)
|
||||||
|
# UNCOMMENT THIS AFTER FIXING BUG#43992
|
||||||
|
################################################################################
|
||||||
|
################################################################################
|
||||||
|
# NULL ---> NOT NULL (NON-STRICT MODE)
|
||||||
|
################################################################################
|
||||||
|
SET SQL_LOG_BIN= 0;
|
||||||
|
CREATE TABLE t1(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t2(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t3(`a` INT NOT NULL, `b` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
SET SQL_LOG_BIN= 1;
|
||||||
|
CREATE TABLE t1(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT NOT NULL,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t2(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
CREATE TABLE t3(`a` INT NOT NULL, `b` INT NOT NULL,
|
||||||
|
`c` INT DEFAULT 500,
|
||||||
|
PRIMARY KEY(`a`)) ENGINE=MyISAM DEFAULT CHARSET=LATIN1;
|
||||||
|
************* EXECUTION WITH INSERTS *************
|
||||||
|
INSERT INTO t1(a) VALUES (1);
|
||||||
|
INSERT INTO t1(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t1(a, b) VALUES (3, 1);
|
||||||
|
INSERT INTO t2(a) VALUES (1);
|
||||||
|
INSERT INTO t2(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t2(a, b) VALUES (3, 1);
|
||||||
|
INSERT INTO t3(a) VALUES (1);
|
||||||
|
INSERT INTO t3(a, b) VALUES (2, NULL);
|
||||||
|
INSERT INTO t3(a, b) VALUES (3, 1);
|
||||||
|
INSERT INTO t3(a, b) VALUES (4, 1);
|
||||||
|
REPLACE INTO t3(a, b) VALUES (5, null);
|
||||||
|
REPLACE INTO t3(a, b) VALUES (3, null);
|
||||||
|
UPDATE t3 SET b = NULL where a = 4;
|
||||||
|
************* SHOWING THE RESULT SETS *************
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 NULL
|
||||||
|
3 1
|
||||||
|
SELECT * FROM t1 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 0 0
|
||||||
|
2 0 0
|
||||||
|
3 1 0
|
||||||
|
SELECT * FROM t2 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 NULL
|
||||||
|
3 1
|
||||||
|
SELECT * FROM t2 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 0 NULL
|
||||||
|
2 0 NULL
|
||||||
|
3 1 NULL
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
2 NULL
|
||||||
|
3 NULL
|
||||||
|
4 NULL
|
||||||
|
5 NULL
|
||||||
|
SELECT * FROM t3 ORDER BY a;
|
||||||
|
a b c
|
||||||
|
1 0 500
|
||||||
|
2 0 500
|
||||||
|
3 0 500
|
||||||
|
4 0 500
|
||||||
|
5 0 500
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t3;
|
@ -476,4 +476,30 @@ master-bin.000001 # Table_map # # table_id: # (mysqltest1.with_select)
|
|||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
DROP DATABASE mysqltest1;
|
DROP DATABASE mysqltest1;
|
||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
CREATE TEMPORARY TABLE t7(c1 INT);
|
||||||
|
CREATE TABLE t5(c1 INT);
|
||||||
|
CREATE TABLE t4(c1 INT);
|
||||||
|
CREATE VIEW bug48506_t1 AS SELECT 1;
|
||||||
|
CREATE VIEW bug48506_t2 AS SELECT * FROM t4;
|
||||||
|
CREATE VIEW bug48506_t3 AS SELECT t5.c1 AS A, t4.c1 AS B FROM t5, t4;
|
||||||
|
CREATE TABLE bug48506_t4(c1 INT);
|
||||||
|
DROP VIEW bug48506_t1, bug48506_t2, bug48506_t3;
|
||||||
|
DROP TABLE bug48506_t4;
|
||||||
|
CREATE TABLE IF NOT EXISTS bug48506_t1 LIKE t7;
|
||||||
|
CREATE TABLE IF NOT EXISTS bug48506_t2 LIKE t7;
|
||||||
|
CREATE TABLE IF NOT EXISTS bug48506_t3 LIKE t7;
|
||||||
|
CREATE TABLE IF NOT EXISTS bug48506_t4 LIKE t7;
|
||||||
|
SHOW TABLES LIKE 'bug48506%';
|
||||||
|
Tables_in_test (bug48506%)
|
||||||
|
bug48506_t4
|
||||||
|
DROP VIEW IF EXISTS bug48506_t1, bug48506_t2, bug48506_t3;
|
||||||
|
DROP TEMPORARY TABLES t7;
|
||||||
|
DROP TABLES t4, t5;
|
||||||
|
DROP TABLES IF EXISTS bug48506_t4;
|
||||||
end of the tests
|
end of the tests
|
||||||
|
@ -105,47 +105,9 @@ a b x
|
|||||||
2 10 Foo is a bar
|
2 10 Foo is a bar
|
||||||
INSERT INTO t9 VALUES (2);
|
INSERT INTO t9 VALUES (2);
|
||||||
INSERT INTO t1_nodef VALUES (1,2);
|
INSERT INTO t1_nodef VALUES (1,2);
|
||||||
SHOW SLAVE STATUS;
|
select count(*) from t1_nodef;
|
||||||
Slave_IO_State #
|
count(*)
|
||||||
Master_Host 127.0.0.1
|
1
|
||||||
Master_User root
|
|
||||||
Master_Port #
|
|
||||||
Connect_Retry 1
|
|
||||||
Master_Log_File master-bin.000001
|
|
||||||
Read_Master_Log_Pos #
|
|
||||||
Relay_Log_File #
|
|
||||||
Relay_Log_Pos #
|
|
||||||
Relay_Master_Log_File master-bin.000001
|
|
||||||
Slave_IO_Running Yes
|
|
||||||
Slave_SQL_Running No
|
|
||||||
Replicate_Do_DB
|
|
||||||
Replicate_Ignore_DB
|
|
||||||
Replicate_Do_Table
|
|
||||||
Replicate_Ignore_Table
|
|
||||||
Replicate_Wild_Do_Table
|
|
||||||
Replicate_Wild_Ignore_Table
|
|
||||||
Last_Errno 1364
|
|
||||||
Last_Error <Last_Error>
|
|
||||||
Skip_Counter 0
|
|
||||||
Exec_Master_Log_Pos #
|
|
||||||
Relay_Log_Space #
|
|
||||||
Until_Condition None
|
|
||||||
Until_Log_File
|
|
||||||
Until_Log_Pos 0
|
|
||||||
Master_SSL_Allowed No
|
|
||||||
Master_SSL_CA_File
|
|
||||||
Master_SSL_CA_Path
|
|
||||||
Master_SSL_Cert
|
|
||||||
Master_SSL_Cipher
|
|
||||||
Master_SSL_Key
|
|
||||||
Seconds_Behind_Master #
|
|
||||||
Master_SSL_Verify_Server_Cert No
|
|
||||||
Last_IO_Errno <Last_IO_Errno>
|
|
||||||
Last_IO_Error <Last_IO_Error>
|
|
||||||
Last_SQL_Errno 1364
|
|
||||||
Last_SQL_Error <Last_SQL_Error>
|
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
|
||||||
START SLAVE;
|
|
||||||
INSERT INTO t9 VALUES (2);
|
INSERT INTO t9 VALUES (2);
|
||||||
**** On Master ****
|
**** On Master ****
|
||||||
INSERT INTO t2 VALUES (2,4);
|
INSERT INTO t2 VALUES (2,4);
|
||||||
|
@ -105,47 +105,9 @@ a b x
|
|||||||
2 10 Foo is a bar
|
2 10 Foo is a bar
|
||||||
INSERT INTO t9 VALUES (2);
|
INSERT INTO t9 VALUES (2);
|
||||||
INSERT INTO t1_nodef VALUES (1,2);
|
INSERT INTO t1_nodef VALUES (1,2);
|
||||||
SHOW SLAVE STATUS;
|
select count(*) from t1_nodef;
|
||||||
Slave_IO_State #
|
count(*)
|
||||||
Master_Host 127.0.0.1
|
1
|
||||||
Master_User root
|
|
||||||
Master_Port #
|
|
||||||
Connect_Retry 1
|
|
||||||
Master_Log_File master-bin.000001
|
|
||||||
Read_Master_Log_Pos #
|
|
||||||
Relay_Log_File #
|
|
||||||
Relay_Log_Pos #
|
|
||||||
Relay_Master_Log_File master-bin.000001
|
|
||||||
Slave_IO_Running Yes
|
|
||||||
Slave_SQL_Running No
|
|
||||||
Replicate_Do_DB
|
|
||||||
Replicate_Ignore_DB
|
|
||||||
Replicate_Do_Table
|
|
||||||
Replicate_Ignore_Table
|
|
||||||
Replicate_Wild_Do_Table
|
|
||||||
Replicate_Wild_Ignore_Table
|
|
||||||
Last_Errno 1364
|
|
||||||
Last_Error <Last_Error>
|
|
||||||
Skip_Counter 0
|
|
||||||
Exec_Master_Log_Pos #
|
|
||||||
Relay_Log_Space #
|
|
||||||
Until_Condition None
|
|
||||||
Until_Log_File
|
|
||||||
Until_Log_Pos 0
|
|
||||||
Master_SSL_Allowed No
|
|
||||||
Master_SSL_CA_File
|
|
||||||
Master_SSL_CA_Path
|
|
||||||
Master_SSL_Cert
|
|
||||||
Master_SSL_Cipher
|
|
||||||
Master_SSL_Key
|
|
||||||
Seconds_Behind_Master #
|
|
||||||
Master_SSL_Verify_Server_Cert No
|
|
||||||
Last_IO_Errno <Last_IO_Errno>
|
|
||||||
Last_IO_Error <Last_IO_Error>
|
|
||||||
Last_SQL_Errno 1364
|
|
||||||
Last_SQL_Error <Last_SQL_Error>
|
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
|
||||||
START SLAVE;
|
|
||||||
INSERT INTO t9 VALUES (2);
|
INSERT INTO t9 VALUES (2);
|
||||||
**** On Master ****
|
**** On Master ****
|
||||||
INSERT INTO t2 VALUES (2,4);
|
INSERT INTO t2 VALUES (2,4);
|
||||||
|
29
mysql-test/suite/rpl/r/rpl_row_trunc_temp.result
Normal file
29
mysql-test/suite/rpl/r/rpl_row_trunc_temp.result
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
CREATE TEMPORARY TABLE t1(c1 INTEGER);
|
||||||
|
CREATE TABLE t2(c1 INTEGER);
|
||||||
|
CREATE TABLE t1(c1 INTEGER);
|
||||||
|
INSERT INTO t1 VALUES(1), (2);
|
||||||
|
INSERT INTO t2 VALUES(1), (2);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SELECT * FROM t2;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
TRUNCATE t1;
|
||||||
|
TRUNCATE t2;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SELECT * FROM t2;
|
||||||
|
c1
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
@ -4,6 +4,7 @@ reset master;
|
|||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
create table t1 (word char(20) not null);
|
create table t1 (word char(20) not null);
|
||||||
load data infile '../../std_data/words.dat' into table t1;
|
load data infile '../../std_data/words.dat' into table t1;
|
||||||
load data local infile 'MYSQL_TEST_DIR/std_data/words.dat' into table t1;
|
load data local infile 'MYSQL_TEST_DIR/std_data/words.dat' into table t1;
|
||||||
|
@ -4,6 +4,7 @@ reset master;
|
|||||||
reset slave;
|
reset slave;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
start slave;
|
start slave;
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
DROP TABLE IF EXISTS t2;
|
DROP TABLE IF EXISTS t2;
|
||||||
DROP TABLE IF EXISTS t3;
|
DROP TABLE IF EXISTS t3;
|
||||||
|
@ -10,3 +10,4 @@
|
|||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
rpl_row_create_table : Bug#45576 2009-12-01 joro rpl_row_create_table fails on PB2
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
-- source include/master-slave.inc
|
-- source include/master-slave.inc
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
create table t1 (a int primary key);
|
create table t1 (a int primary key);
|
||||||
create table t4 (a int primary key);
|
create table t4 (a int primary key);
|
||||||
@ -14,19 +16,15 @@ create table t4 (a int primary key);
|
|||||||
--error 1022, ER_DUP_ENTRY
|
--error 1022, ER_DUP_ENTRY
|
||||||
insert into t1 values (1),(1);
|
insert into t1 values (1),(1);
|
||||||
insert into t4 values (1),(2);
|
insert into t4 values (1),(2);
|
||||||
save_master_pos;
|
|
||||||
connection slave;
|
|
||||||
# as the t1 table is ignored on the slave, the slave should be able to sync
|
# as the t1 table is ignored on the slave, the slave should be able to sync
|
||||||
sync_with_master;
|
sync_slave_with_master;
|
||||||
# check that the table has been ignored, because otherwise the test is nonsense
|
# check that the table has been ignored, because otherwise the test is nonsense
|
||||||
show tables like 't1';
|
show tables like 't1';
|
||||||
show tables like 't4';
|
show tables like 't4';
|
||||||
SELECT * FROM test.t4 ORDER BY a;
|
SELECT * FROM test.t4 ORDER BY a;
|
||||||
connection master;
|
connection master;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
save_master_pos;
|
sync_slave_with_master;
|
||||||
connection slave;
|
|
||||||
sync_with_master;
|
|
||||||
|
|
||||||
# Now test that even critical errors (connection killed)
|
# Now test that even critical errors (connection killed)
|
||||||
# are ignored if rules allow it.
|
# are ignored if rules allow it.
|
||||||
@ -50,18 +48,17 @@ kill @id;
|
|||||||
drop table t2,t3;
|
drop table t2,t3;
|
||||||
insert into t4 values (3),(4);
|
insert into t4 values (3),(4);
|
||||||
connection master;
|
connection master;
|
||||||
|
# The get_lock function causes warning for unsafe statement.
|
||||||
|
--disable_warnings
|
||||||
--error 0,1317,2013
|
--error 0,1317,2013
|
||||||
reap;
|
reap;
|
||||||
|
--enable_warnings
|
||||||
connection master1;
|
connection master1;
|
||||||
save_master_pos;
|
sync_slave_with_master;
|
||||||
connection slave;
|
|
||||||
sync_with_master;
|
|
||||||
SELECT * FROM test.t4 ORDER BY a;
|
SELECT * FROM test.t4 ORDER BY a;
|
||||||
|
|
||||||
connection master1;
|
connection master1;
|
||||||
DROP TABLE test.t4;
|
DROP TABLE test.t4;
|
||||||
save_master_pos;
|
sync_slave_with_master;
|
||||||
connection slave;
|
|
||||||
sync_with_master;
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
# Adding comment for force manual merge 5.0 -> wl1012. delete me if needed
|
# Adding comment for force manual merge 5.0 -> wl1012. delete me if needed
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
source include/master-slave.inc;
|
source include/master-slave.inc;
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
|
|
||||||
create table t1(n int);
|
create table t1(n int);
|
||||||
|
# Use of get_lock gives a warning for unsafeness if binlog_format=statement
|
||||||
|
--disable_warnings
|
||||||
insert into t1 values(get_lock("lock",2));
|
insert into t1 values(get_lock("lock",2));
|
||||||
|
--enable_warnings
|
||||||
dirty_close master;
|
dirty_close master;
|
||||||
connection master1;
|
connection master1;
|
||||||
select get_lock("lock",2);
|
select get_lock("lock",2);
|
||||||
|
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.opt
Normal file
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--secure-file-priv=$MYSQLTEST_VARDIR/std_data_master_link
|
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.sh
Normal file
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-master.sh
Normal file
@ -0,0 +1 @@
|
|||||||
|
ln -s $MYSQLTEST_VARDIR/std_data $MYSQLTEST_VARDIR/std_data_master_link
|
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.opt
Normal file
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--slave-load-tmpdir=$MYSQLTEST_VARDIR/std_data_slave_link
|
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.sh
Normal file
1
mysql-test/suite/rpl/t/rpl_loaddata_symlink-slave.sh
Normal file
@ -0,0 +1 @@
|
|||||||
|
ln -s $MYSQLTEST_VARDIR/std_data $MYSQLTEST_VARDIR/std_data_slave_link
|
20
mysql-test/suite/rpl/t/rpl_loaddata_symlink.test
Normal file
20
mysql-test/suite/rpl/t/rpl_loaddata_symlink.test
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# BUG#43913
|
||||||
|
# This test verifies if loading data infile will work fine
|
||||||
|
# if the path of the load data file is a symbolic link.
|
||||||
|
#
|
||||||
|
--source include/master-slave.inc
|
||||||
|
--source include/have_binlog_format_statement.inc
|
||||||
|
|
||||||
|
create table t1(a int not null auto_increment, b int, primary key(a) );
|
||||||
|
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
connection slave;
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
53
mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test
Normal file
53
mysql-test/suite/rpl/t/rpl_nondeterministic_functions.test
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# Test that nondeterministic system functions are correctly replicated.
|
||||||
|
#
|
||||||
|
# (Some functions are only correctly replicated if binlog_format=MIXED
|
||||||
|
# or ROW. See binlog_unsafe.test for a test that those variables are
|
||||||
|
# indeed unsafe.)
|
||||||
|
#
|
||||||
|
# ==== Implementation ====
|
||||||
|
#
|
||||||
|
# We insert the values of each unsafe function into a table. Then we
|
||||||
|
# replicate and check that the table is identical on slave.
|
||||||
|
#
|
||||||
|
# ==== Related bugs ====
|
||||||
|
#
|
||||||
|
# BUG#47995
|
||||||
|
|
||||||
|
--source include/master-slave.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(1000));
|
||||||
|
|
||||||
|
# We replicate the connection_id in the query_log_event
|
||||||
|
INSERT INTO t1 VALUES (CONNECTION_ID());
|
||||||
|
--connection master1
|
||||||
|
INSERT INTO t1 VALUES (CONNECTION_ID());
|
||||||
|
|
||||||
|
# We replicate the TIMESTAMP variable, so the following functions that
|
||||||
|
# are affected by the TIMESTAMP variable should be safe to replicate.
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(CURDATE()),
|
||||||
|
(CURRENT_DATE()),
|
||||||
|
(CURRENT_TIME()),
|
||||||
|
(CURRENT_TIMESTAMP()),
|
||||||
|
(CURTIME()),
|
||||||
|
(LOCALTIME()),
|
||||||
|
(LOCALTIMESTAMP()),
|
||||||
|
(NOW()),
|
||||||
|
(UNIX_TIMESTAMP()),
|
||||||
|
(UTC_DATE()),
|
||||||
|
(UTC_TIME()),
|
||||||
|
(UTC_TIMESTAMP());
|
||||||
|
|
||||||
|
# We replicate the random seed in a rand_log_event
|
||||||
|
INSERT INTO t1 VALUES (RAND());
|
||||||
|
# We replicate the last_insert_id in an intvar_log_event
|
||||||
|
INSERT INTO t1 VALUES (LAST_INSERT_ID());
|
||||||
|
|
||||||
|
--sync_slave_with_master
|
||||||
|
--let $diff_table_1= master:test.t1
|
||||||
|
--let $diff_table_2= slave:test.t1
|
||||||
|
--source include/diff_tables.inc
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
19
mysql-test/suite/rpl/t/rpl_not_null_innodb.test
Normal file
19
mysql-test/suite/rpl/t/rpl_not_null_innodb.test
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#################################################################################
|
||||||
|
# This test checks if the replication between "null" fields to either "null"
|
||||||
|
# fields or "not null" fields works properly. In the first case, the execution
|
||||||
|
# should work fine. In the second case, it may fail according to the sql_mode
|
||||||
|
# being used.
|
||||||
|
#
|
||||||
|
# The test is devided in three main parts:
|
||||||
|
#
|
||||||
|
# 1 - NULL --> NULL (no failures)
|
||||||
|
# 2 - NULL --> NOT NULL ( sql-mode = STRICT and failures)
|
||||||
|
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures)
|
||||||
|
#
|
||||||
|
#################################################################################
|
||||||
|
--source include/master-slave.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
|
||||||
|
let $engine=Innodb;
|
||||||
|
--source extra/rpl_tests/rpl_not_null.test
|
18
mysql-test/suite/rpl/t/rpl_not_null_myisam.test
Normal file
18
mysql-test/suite/rpl/t/rpl_not_null_myisam.test
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#################################################################################
|
||||||
|
# This test checks if the replication between "null" fields to either "null"
|
||||||
|
# fields or "not null" fields works properly. In the first case, the execution
|
||||||
|
# should work fine. In the second case, it may fail according to the sql_mode
|
||||||
|
# being used.
|
||||||
|
#
|
||||||
|
# The test is devided in three main parts:
|
||||||
|
#
|
||||||
|
# 1 - NULL --> NULL (no failures)
|
||||||
|
# 2 - NULL --> NOT NULL ( sql-mode = STRICT and failures)
|
||||||
|
# 3 - NULL --> NOT NULL ( sql-mode != STRICT and no failures)
|
||||||
|
#
|
||||||
|
#################################################################################
|
||||||
|
--source include/master-slave.inc
|
||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
|
||||||
|
let $engine=MyISAM;
|
||||||
|
--source extra/rpl_tests/rpl_not_null.test
|
@ -292,4 +292,40 @@ connection master;
|
|||||||
DROP DATABASE mysqltest1;
|
DROP DATABASE mysqltest1;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#48506: crash in CREATE TABLE <existing_view> IF NOT EXISTS LIKE
|
||||||
|
# <tmp_tbl> with RBL
|
||||||
|
#
|
||||||
|
|
||||||
|
source include/master-slave-reset.inc;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
CREATE TEMPORARY TABLE t7(c1 INT);
|
||||||
|
CREATE TABLE t5(c1 INT);
|
||||||
|
CREATE TABLE t4(c1 INT);
|
||||||
|
CREATE VIEW bug48506_t1 AS SELECT 1;
|
||||||
|
CREATE VIEW bug48506_t2 AS SELECT * FROM t4;
|
||||||
|
CREATE VIEW bug48506_t3 AS SELECT t5.c1 AS A, t4.c1 AS B FROM t5, t4;
|
||||||
|
CREATE TABLE bug48506_t4(c1 INT);
|
||||||
|
--disable_warnings
|
||||||
|
sync_slave_with_master;
|
||||||
|
DROP VIEW bug48506_t1, bug48506_t2, bug48506_t3;
|
||||||
|
DROP TABLE bug48506_t4;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
CREATE TABLE IF NOT EXISTS bug48506_t1 LIKE t7;
|
||||||
|
CREATE TABLE IF NOT EXISTS bug48506_t2 LIKE t7;
|
||||||
|
CREATE TABLE IF NOT EXISTS bug48506_t3 LIKE t7;
|
||||||
|
CREATE TABLE IF NOT EXISTS bug48506_t4 LIKE t7;
|
||||||
|
--enable_warnings
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
SHOW TABLES LIKE 'bug48506%';
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
DROP VIEW IF EXISTS bug48506_t1, bug48506_t2, bug48506_t3;
|
||||||
|
DROP TEMPORARY TABLES t7;
|
||||||
|
DROP TABLES t4, t5;
|
||||||
|
DROP TABLES IF EXISTS bug48506_t4;
|
||||||
|
source include/master-slave-end.inc;
|
||||||
--echo end of the tests
|
--echo end of the tests
|
||||||
|
35
mysql-test/suite/rpl/t/rpl_row_trunc_temp.test
Normal file
35
mysql-test/suite/rpl/t/rpl_row_trunc_temp.test
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#
|
||||||
|
# Bug#48350 truncate temporary table crashes replication
|
||||||
|
#
|
||||||
|
# All statements operating on temporary tables should not be binlogged in RBR.
|
||||||
|
# However, before fix of bug#48350, 'TRUNCATE ...' statement on a temporary
|
||||||
|
# table was binlogged in RBR.
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/master-slave.inc
|
||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
|
||||||
|
#This statement is not binlogged in RBR.
|
||||||
|
CREATE TEMPORARY TABLE t1(c1 INTEGER);
|
||||||
|
CREATE TABLE t2(c1 INTEGER);
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
CREATE TABLE t1(c1 INTEGER);
|
||||||
|
INSERT INTO t1 VALUES(1), (2);
|
||||||
|
INSERT INTO t2 VALUES(1), (2);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
TRUNCATE t1;
|
||||||
|
TRUNCATE t2;
|
||||||
|
sync_slave_with_master;
|
||||||
|
# t1 will have nothing, if 'TRUNCATE t1' has been replicate from master to
|
||||||
|
# slave.
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
connection master;
|
||||||
|
DROP TABLE t2;
|
||||||
|
--source include/master-slave-end.inc
|
@ -5,6 +5,8 @@
|
|||||||
--source include/have_binlog_format_mixed_or_statement.inc
|
--source include/have_binlog_format_mixed_or_statement.inc
|
||||||
--source include/master-slave.inc
|
--source include/master-slave.inc
|
||||||
|
|
||||||
|
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
DROP TABLE IF EXISTS t2;
|
DROP TABLE IF EXISTS t2;
|
||||||
@ -89,7 +91,11 @@ end
|
|||||||
|
|
|
|
||||||
|
|
||||||
delimiter ;|
|
delimiter ;|
|
||||||
|
# The trigger causes a warning for unsafe statement when
|
||||||
|
# binlog_format=statement since it uses get_lock.
|
||||||
|
--disable_warnings
|
||||||
insert into t1 set a = now();
|
insert into t1 set a = now();
|
||||||
|
--enable_warnings
|
||||||
select a=b && a=c from t1;
|
select a=b && a=c from t1;
|
||||||
let $time=`select a from t1`;
|
let $time=`select a from t1`;
|
||||||
|
|
||||||
@ -135,7 +141,11 @@ disconnect con2;
|
|||||||
truncate table t1;
|
truncate table t1;
|
||||||
drop trigger t1_first;
|
drop trigger t1_first;
|
||||||
|
|
||||||
|
# The trigger causes a warning for unsafe statement when
|
||||||
|
# binlog_format=statement since it uses get_lock.
|
||||||
|
--disable_warnings
|
||||||
insert into t1 values ("2003-03-03","2003-03-03","2003-03-03"),(bug12480(),bug12480(),bug12480()),(now(),now(),now());
|
insert into t1 values ("2003-03-03","2003-03-03","2003-03-03"),(bug12480(),bug12480(),bug12480()),(now(),now(),now());
|
||||||
|
--enable_warnings
|
||||||
select a=b && a=c from t1;
|
select a=b && a=c from t1;
|
||||||
|
|
||||||
drop function bug12480;
|
drop function bug12480;
|
||||||
|
@ -400,62 +400,6 @@ set @b1 = concat(@b1,@b1);
|
|||||||
INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
INSERT INTO t8 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
||||||
*** Drop t8 ***
|
*** Drop t8 ***
|
||||||
DROP TABLE t8;
|
DROP TABLE t8;
|
||||||
STOP SLAVE;
|
|
||||||
RESET SLAVE;
|
|
||||||
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
|
|
||||||
d TIMESTAMP,
|
|
||||||
e INT NOT NULL) ENGINE='NDB';
|
|
||||||
*** Create t9 on Master ***
|
|
||||||
CREATE TABLE t9 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
|
|
||||||
) ENGINE='NDB';
|
|
||||||
RESET MASTER;
|
|
||||||
*** Start Slave ***
|
|
||||||
START SLAVE;
|
|
||||||
*** Master Data Insert ***
|
|
||||||
set @b1 = 'b1b1b1b1';
|
|
||||||
set @b1 = concat(@b1,@b1);
|
|
||||||
INSERT INTO t9 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
|
|
||||||
SHOW SLAVE STATUS;
|
|
||||||
Slave_IO_State #
|
|
||||||
Master_Host 127.0.0.1
|
|
||||||
Master_User root
|
|
||||||
Master_Port #
|
|
||||||
Connect_Retry 1
|
|
||||||
Master_Log_File master-bin.000001
|
|
||||||
Read_Master_Log_Pos #
|
|
||||||
Relay_Log_File #
|
|
||||||
Relay_Log_Pos #
|
|
||||||
Relay_Master_Log_File master-bin.000001
|
|
||||||
Slave_IO_Running Yes
|
|
||||||
Slave_SQL_Running No
|
|
||||||
Replicate_Do_DB
|
|
||||||
Replicate_Ignore_DB
|
|
||||||
Replicate_Do_Table
|
|
||||||
Replicate_Ignore_Table #
|
|
||||||
Replicate_Wild_Do_Table
|
|
||||||
Replicate_Wild_Ignore_Table
|
|
||||||
Last_Errno 1364
|
|
||||||
Last_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 447
|
|
||||||
Skip_Counter 0
|
|
||||||
Exec_Master_Log_Pos #
|
|
||||||
Relay_Log_Space #
|
|
||||||
Until_Condition None
|
|
||||||
Until_Log_File
|
|
||||||
Until_Log_Pos 0
|
|
||||||
Master_SSL_Allowed No
|
|
||||||
Master_SSL_CA_File
|
|
||||||
Master_SSL_CA_Path
|
|
||||||
Master_SSL_Cert
|
|
||||||
Master_SSL_Cipher
|
|
||||||
Master_SSL_Key
|
|
||||||
Seconds_Behind_Master #
|
|
||||||
Master_SSL_Verify_Server_Cert No
|
|
||||||
Last_IO_Errno #
|
|
||||||
Last_IO_Error #
|
|
||||||
Last_SQL_Errno 1364
|
|
||||||
Last_SQL_Error Could not execute Write_rows event on table test.t9; Field 'e' doesn't have a default value, Error_code: 1364; handler error HA_ERR_ROWS_EVENT_APPLY; the event's master log master-bin.000001, end_log_pos 447
|
|
||||||
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
|
|
||||||
START SLAVE;
|
|
||||||
*** Create t10 on slave ***
|
*** Create t10 on slave ***
|
||||||
STOP SLAVE;
|
STOP SLAVE;
|
||||||
RESET SLAVE;
|
RESET SLAVE;
|
||||||
|
@ -1625,3 +1625,24 @@ INSERT INTO t1 VALUES('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),
|
|||||||
SELECT COUNT(t1.a) FROM t1, t1 a, t1 b, t1 c, t1 d, t1 e;
|
SELECT COUNT(t1.a) FROM t1, t1 a, t1 b, t1 c, t1 d, t1 e;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET @@join_buffer_size= @save_join_buffer_size;
|
SET @@join_buffer_size= @save_join_buffer_size;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#47012 archive tables are not upgradeable, and server crashes on any access
|
||||||
|
#
|
||||||
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
|
copy_file std_data/bug47012.frm $MYSQLD_DATADIR/test/t1.frm;
|
||||||
|
copy_file std_data/bug47012.ARZ $MYSQLD_DATADIR/test/t1.ARZ;
|
||||||
|
copy_file std_data/bug47012.ARM $MYSQLD_DATADIR/test/t1.ARM;
|
||||||
|
|
||||||
|
--error ER_TABLE_NEEDS_UPGRADE
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
|
||||||
|
--error ER_TABLE_NEEDS_UPGRADE
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
--error ER_TABLE_NEEDS_UPGRADE
|
||||||
|
INSERT INTO t1 (col1, col2) VALUES (1, "value");
|
||||||
|
|
||||||
|
REPAIR TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
remove_file $MYSQLD_DATADIR/test/t1.ARM;
|
||||||
|
1
mysql-test/t/bug47671-master.opt
Normal file
1
mysql-test/t/bug47671-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--default-character-set=utf8 --skip-character-set-client-handshake
|
9
mysql-test/t/bug47671.test
Normal file
9
mysql-test/t/bug47671.test
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Embedded server doesn't support external clients
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39
|
||||||
|
--echo #
|
||||||
|
--echo # Extract only charset information from 'status' command output using regex
|
||||||
|
--replace_regex /.*mysql.*// /Connection.*// /Current.*// /SSL.*// /Using.*// /Server version.*// /Protocol.*// /UNIX.*// /Uptime.*// /Threads.*// /TCP.*//
|
||||||
|
--exec $MYSQL -e "status";
|
@ -341,4 +341,28 @@ drop table t1;
|
|||||||
|
|
||||||
set global low_priority_updates = @old_delayed_updates;
|
set global low_priority_updates = @old_delayed_updates;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #47682 strange behaviour of INSERT DELAYED
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 integer);
|
||||||
|
CREATE TABLE t2 (f1 integer);
|
||||||
|
|
||||||
|
FLUSH TABLES WITH READ LOCK;
|
||||||
|
LOCK TABLES t1 READ;
|
||||||
|
|
||||||
|
# ER_CANT_UPDATE_WITH_READLOCK with normal execution
|
||||||
|
# ER_TABLE_NOT_LOCKED when executed as prepared statement
|
||||||
|
--error ER_CANT_UPDATE_WITH_READLOCK, ER_TABLE_NOT_LOCKED
|
||||||
|
INSERT DELAYED INTO t2 VALUES (1);
|
||||||
|
|
||||||
|
UNLOCK TABLES;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -336,3 +336,25 @@ SELECT * FROM t2;
|
|||||||
SELECT * FROM t3;
|
SELECT * FROM t3;
|
||||||
|
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #46425 crash in Diagnostics_area::set_ok_status,
|
||||||
|
--echo # empty statement, DELETE IGNORE
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE table t1 (i INTEGER);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
|
||||||
|
--delimiter |
|
||||||
|
|
||||||
|
CREATE TRIGGER tr1 AFTER DELETE ON t1 FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO t1 SELECT * FROM t1 AS A;
|
||||||
|
END |
|
||||||
|
|
||||||
|
--delimiter ;
|
||||||
|
--error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
|
||||||
|
DELETE IGNORE FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
@ -11,7 +11,5 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
kill : Bug#37780 2008-12-03 HHunger need some changes to be robust enough for pushbuild.
|
||||||
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
|
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
|
||||||
partition_innodb_builtin : Bug#32430 2009-09-25 mattiasj Waiting for push of Innodb changes
|
|
||||||
partition_innodb_plugin : Bug#32430 2009-09-25 mattiasj Waiting for push of Innodb changes
|
|
||||||
innodb-autoinc : Bug#48482 2009-11-02 svoj innodb-autoinc.test fails with results difference
|
|
||||||
rpl_killed_ddl : Bug#45520: rpl_killed_ddl fails sporadically in pb2
|
rpl_killed_ddl : Bug#45520: rpl_killed_ddl fails sporadically in pb2
|
||||||
|
innodb-autoinc : Bug#49267 2009-12-02 test fails on windows because of different case mode
|
||||||
|
@ -496,3 +496,44 @@ PREPARE s FROM
|
|||||||
EXECUTE s;
|
EXECUTE s;
|
||||||
DEALLOCATE PREPARE s;
|
DEALLOCATE PREPARE s;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #47930: MATCH IN BOOLEAN MODE returns too many results
|
||||||
|
--echo # inside subquery
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (a int, b2 char(10), FULLTEXT KEY b2 (b2));
|
||||||
|
INSERT INTO t2 VALUES (1,'Scargill');
|
||||||
|
|
||||||
|
CREATE TABLE t3 (a int, b int);
|
||||||
|
INSERT INTO t3 VALUES (1,1), (2,1);
|
||||||
|
|
||||||
|
--echo # t2 should use full text index
|
||||||
|
EXPLAIN
|
||||||
|
SELECT count(*) FROM t1 WHERE
|
||||||
|
not exists(
|
||||||
|
SELECT 1 FROM t2, t3
|
||||||
|
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||||
|
);
|
||||||
|
|
||||||
|
--echo # should return 0
|
||||||
|
SELECT count(*) FROM t1 WHERE
|
||||||
|
not exists(
|
||||||
|
SELECT 1 FROM t2, t3
|
||||||
|
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||||
|
);
|
||||||
|
|
||||||
|
--echo # should return 0
|
||||||
|
SELECT count(*) FROM t1 WHERE
|
||||||
|
not exists(
|
||||||
|
SELECT 1 FROM t2 IGNORE INDEX (b2), t3
|
||||||
|
WHERE t3.a=t1.a AND MATCH(b2) AGAINST('scargill' IN BOOLEAN MODE)
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
@ -1053,4 +1053,35 @@ ORDER BY max;
|
|||||||
--echo #
|
--echo #
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#43668: Wrong comparison and MIN/MAX for YEAR(2)
|
||||||
|
--echo #
|
||||||
|
create table t1 (f1 year(2), f2 year(4), f3 date, f4 datetime);
|
||||||
|
insert into t1 values
|
||||||
|
(98,1998,19980101,"1998-01-01 00:00:00"),
|
||||||
|
(00,2000,20000101,"2000-01-01 00:00:01"),
|
||||||
|
(02,2002,20020101,"2002-01-01 23:59:59"),
|
||||||
|
(60,2060,20600101,"2060-01-01 11:11:11"),
|
||||||
|
(70,1970,19700101,"1970-11-11 22:22:22"),
|
||||||
|
(NULL,NULL,NULL,NULL);
|
||||||
|
select min(f1),max(f1) from t1;
|
||||||
|
select min(f2),max(f2) from t1;
|
||||||
|
select min(f3),max(f3) from t1;
|
||||||
|
select min(f4),max(f4) from t1;
|
||||||
|
select a.f1 as a, b.f1 as b, a.f1 > b.f1 as gt,
|
||||||
|
a.f1 < b.f1 as lt, a.f1<=>b.f1 as eq
|
||||||
|
from t1 a, t1 b;
|
||||||
|
select a.f1 as a, b.f2 as b, a.f1 > b.f2 as gt,
|
||||||
|
a.f1 < b.f2 as lt, a.f1<=>b.f2 as eq
|
||||||
|
from t1 a, t1 b;
|
||||||
|
select a.f1 as a, b.f3 as b, a.f1 > b.f3 as gt,
|
||||||
|
a.f1 < b.f3 as lt, a.f1<=>b.f3 as eq
|
||||||
|
from t1 a, t1 b;
|
||||||
|
select a.f1 as a, b.f4 as b, a.f1 > b.f4 as gt,
|
||||||
|
a.f1 < b.f4 as lt, a.f1<=>b.f4 as eq
|
||||||
|
from t1 a, t1 b;
|
||||||
|
select *, f1 = f2 from t1;
|
||||||
|
drop table t1;
|
||||||
|
--echo #
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
|
@ -632,5 +632,40 @@ DROP DATABASE db1;
|
|||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #48319: Server crashes on "GRANT/REVOKE ... TO CURRENT_USER"
|
||||||
|
#
|
||||||
|
|
||||||
|
# work out who we are.
|
||||||
|
USE mysql;
|
||||||
|
SELECT LEFT(CURRENT_USER(),INSTR(CURRENT_USER(),'@')-1) INTO @u;
|
||||||
|
SELECT MID(CURRENT_USER(),INSTR(CURRENT_USER(),'@')+1) INTO @h;
|
||||||
|
SELECT password FROM user WHERE user=@u AND host=@h INTO @pwd;
|
||||||
|
|
||||||
|
# show current privs.
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
|
||||||
|
# toggle INSERT
|
||||||
|
UPDATE user SET insert_priv='N' WHERE user=@u AND host=@h;
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
|
||||||
|
# show that GRANT ... TO CURRENT_USER() no longer crashes
|
||||||
|
GRANT INSERT ON *.* TO CURRENT_USER();
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
UPDATE user SET insert_priv='N' WHERE user=@u AND host=@h;
|
||||||
|
|
||||||
|
# show that GRANT ... TO CURRENT_USER() IDENTIFIED BY ... works now
|
||||||
|
GRANT INSERT ON *.* TO CURRENT_USER() IDENTIFIED BY 'keksdose';
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
|
||||||
|
UPDATE user SET password=@pwd WHERE user=@u AND host=@h;
|
||||||
|
SELECT user,host,password,insert_priv FROM user WHERE user=@u AND host=@h;
|
||||||
|
|
||||||
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
|
USE test;
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
|
||||||
# Wait till we reached the initial number of concurrent sessions
|
# Wait till we reached the initial number of concurrent sessions
|
||||||
--source include/wait_until_count_sessions.inc
|
--source include/wait_until_count_sessions.inc
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user