merging from 5.1 to rep+2 starting at gca(5.1, next-mr) == build@mysql.com-20091208092611-pbno5awyb0v38hs7
Fixed conflicts in: - binlog.binlog_unsafe - rpl.rpl_slow_query_log
This commit is contained in:
commit
013cc668df
@ -196,10 +196,6 @@ test-bt-fast:
|
|||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
@PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
|
@PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
|
||||||
|
|
||||||
test-bt-fast:
|
|
||||||
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
|
||||||
@PERL@ ./mysql-test-run.pl --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 --comment=debug --force --timer \
|
@PERL@ ./mysql-test-run.pl --comment=debug --force --timer \
|
||||||
|
@ -4335,7 +4335,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)
|
||||||
@ -4379,7 +4379,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)
|
||||||
@ -4474,9 +4474,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 : "";
|
||||||
|
@ -6827,10 +6827,8 @@ void run_query_stmt(MYSQL *mysql, struct st_command *command,
|
|||||||
MYSQL_STMT *stmt;
|
MYSQL_STMT *stmt;
|
||||||
DYNAMIC_STRING ds_prepare_warnings;
|
DYNAMIC_STRING ds_prepare_warnings;
|
||||||
DYNAMIC_STRING ds_execute_warnings;
|
DYNAMIC_STRING ds_execute_warnings;
|
||||||
ulonglong affected_rows;
|
|
||||||
DBUG_ENTER("run_query_stmt");
|
DBUG_ENTER("run_query_stmt");
|
||||||
DBUG_PRINT("query", ("'%-.60s'", query));
|
DBUG_PRINT("query", ("'%-.60s'", query));
|
||||||
LINT_INIT(affected_rows);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Init a new stmt if it's not already one created for this connection
|
Init a new stmt if it's not already one created for this connection
|
||||||
@ -6966,8 +6964,7 @@ void run_query_stmt(MYSQL *mysql, struct st_command *command,
|
|||||||
warnings here
|
warnings here
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
ulonglong affected_rows;
|
ulonglong UNINIT_VAR(affected_rows);
|
||||||
LINT_INIT(affected_rows);
|
|
||||||
|
|
||||||
if (!disable_info)
|
if (!disable_info)
|
||||||
affected_rows= mysql_affected_rows(mysql);
|
affected_rows= mysql_affected_rows(mysql);
|
||||||
|
@ -601,15 +601,15 @@ dnl ---------------------------------------------------------------------------
|
|||||||
|
|
||||||
dnl MYSQL_NEEDS_MYSYS_NEW
|
dnl MYSQL_NEEDS_MYSYS_NEW
|
||||||
AC_DEFUN([MYSQL_NEEDS_MYSYS_NEW],
|
AC_DEFUN([MYSQL_NEEDS_MYSYS_NEW],
|
||||||
[AC_CACHE_CHECK([needs mysys_new helpers], mysql_use_mysys_new,
|
[AC_CACHE_CHECK([needs mysys_new helpers], mysql_cv_use_mysys_new,
|
||||||
[
|
[
|
||||||
AC_LANG_PUSH(C++)
|
AC_LANG_PUSH(C++)
|
||||||
AC_TRY_LINK([], [
|
AC_TRY_LINK([], [
|
||||||
class A { public: int b; }; A *a=new A; a->b=10; delete a;
|
class A { public: int b; }; A *a=new A; a->b=10; delete a;
|
||||||
], mysql_use_mysys_new=no, mysql_use_mysys_new=yes)
|
], mysql_cv_use_mysys_new=no, mysql_cv_use_mysys_new=yes)
|
||||||
AC_LANG_POP(C++)
|
AC_LANG_POP(C++)
|
||||||
])
|
])
|
||||||
if test "$mysql_use_mysys_new" = "yes"
|
if test "$mysql_cv_use_mysys_new" = "yes"
|
||||||
then
|
then
|
||||||
AC_DEFINE([USE_MYSYS_NEW], [1], [Needs to use mysys_new helpers])
|
AC_DEFINE([USE_MYSYS_NEW], [1], [Needs to use mysys_new helpers])
|
||||||
fi
|
fi
|
||||||
|
@ -10,9 +10,15 @@ AC_CANONICAL_SYSTEM
|
|||||||
#
|
#
|
||||||
# When changing major version number please also check switch statement
|
# When changing major version number please also check switch statement
|
||||||
# in mysqlbinlog::check_master_version().
|
# in mysqlbinlog::check_master_version().
|
||||||
AM_INIT_AUTOMAKE(mysql, 5.1.42)
|
AM_INIT_AUTOMAKE(mysql, 5.1.43)
|
||||||
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
|
||||||
|
@ -557,16 +557,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);
|
||||||
|
@ -224,8 +224,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_ */
|
||||||
|
@ -1629,20 +1629,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
|
||||||
|
@ -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,15 @@ 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"),
|
||||||
|
|
||||||
|
/*
|
||||||
|
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")||
|
||||||
|
|
||||||
|
|
||||||
|
@ -520,6 +520,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;
|
||||||
|
13
mysql-test/r/bug47671.result
Normal file
13
mysql-test/r/bug47671.result
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#
|
||||||
|
# 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 characterset: utf8
|
||||||
|
Db characterset: utf8
|
||||||
|
Client characterset: utf8
|
||||||
|
Conn. characterset: utf8
|
||||||
|
|
||||||
|
--------------
|
||||||
|
|
@ -310,4 +310,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;
|
||||||
|
@ -551,3 +551,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
|
||||||
|
@ -875,11 +875,11 @@ ALTER TABLE t1 CHANGE c1 d1 INT NOT NULL AUTO_INCREMENT;
|
|||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
d1
|
d1
|
||||||
1
|
1
|
||||||
3
|
2
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
d1
|
d1
|
||||||
1
|
1
|
||||||
3
|
2
|
||||||
INSERT INTO t1 VALUES(null);
|
INSERT INTO t1 VALUES(null);
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
ALTER TABLE t1 AUTO_INCREMENT = 3;
|
ALTER TABLE t1 AUTO_INCREMENT = 3;
|
||||||
@ -888,13 +888,13 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`d1` int(11) NOT NULL AUTO_INCREMENT,
|
`d1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
PRIMARY KEY (`d1`)
|
PRIMARY KEY (`d1`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1
|
||||||
INSERT INTO t1 VALUES(null);
|
INSERT INTO t1 VALUES(null);
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
d1
|
d1
|
||||||
1
|
1
|
||||||
|
2
|
||||||
3
|
3
|
||||||
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%";
|
||||||
@ -1126,3 +1126,67 @@ SELECT * FROM T1;
|
|||||||
c1 c2
|
c1 c2
|
||||||
10 0
|
10 0
|
||||||
DROP TABLE T1;
|
DROP TABLE T1;
|
||||||
|
DROP TABLE IF EXISTS T1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown 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;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown 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
|
||||||
|
@ -4427,6 +4427,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);
|
||||||
@ -4577,4 +4591,22 @@ 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;
|
||||||
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.
|
||||||
|
@ -6970,6 +6970,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
|
||||||
|
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
|
||||||
|
@ -382,4 +382,87 @@ master-bin.000001 13657 Write_rows 1 13695 table_id: 48
|
|||||||
master-bin.000001 13695 Write_rows 1 13729 table_id: 47 flags: STMT_END_F
|
master-bin.000001 13695 Write_rows 1 13729 table_id: 47 flags: STMT_END_F
|
||||||
master-bin.000001 13729 Query 1 13798 COMMIT
|
master-bin.000001 13729 Query 1 13798 COMMIT
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
SET SESSION binlog_format = STATEMENT;
|
||||||
|
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
|
||||||
|
@ -426,7 +426,7 @@ eval SHOW BINLOG EVENTS FROM $pos0_master;
|
|||||||
# clean up
|
# clean up
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
DROP FUNCTION func_modify_t1;
|
DROP FUNCTION func_modify_t1;
|
||||||
|
#
|
||||||
# Test case2: stmt that have more than one different tables
|
# Test case2: stmt that have more than one different tables
|
||||||
# to update with autoinc columns should produce
|
# to update with autoinc columns should produce
|
||||||
# unsafe warning when invoking a trigger
|
# unsafe warning when invoking a trigger
|
||||||
@ -456,4 +456,56 @@ eval SHOW BINLOG EVENTS FROM $pos1_master;
|
|||||||
# clean up
|
# clean up
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
SET SESSION binlog_format = STATEMENT;
|
||||||
|
|
||||||
|
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
|
@ -31,8 +31,6 @@ select @@innodb_file_format_check;
|
|||||||
@@innodb_file_format_check
|
@@innodb_file_format_check
|
||||||
Barracuda
|
Barracuda
|
||||||
set global innodb_file_format_check=default;
|
set global innodb_file_format_check=default;
|
||||||
Warnings:
|
|
||||||
Warning 1210 Ignoring SET innodb_file_format=on
|
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_check;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_check
|
||||||
Barracuda
|
Barracuda
|
||||||
|
@ -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
|
@ -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);
|
||||||
|
@ -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;
|
@ -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
|
||||||
|
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;
|
@ -14,6 +14,8 @@ include/start_slave.inc
|
|||||||
CREATE TABLE t1 (a int, b int);
|
CREATE TABLE t1 (a int, b int);
|
||||||
INSERT INTO t1 values(1, 1);
|
INSERT INTO t1 values(1, 1);
|
||||||
INSERT INTO t1 values(1, sleep(3));
|
INSERT INTO t1 values(1, sleep(3));
|
||||||
|
Warnings:
|
||||||
|
Note 1592 Statement may not be safe to log in statement format.
|
||||||
TRUNCATE mysql.slow_log;
|
TRUNCATE mysql.slow_log;
|
||||||
SELECT 1, sleep(3);
|
SELECT 1, sleep(3);
|
||||||
1 sleep(3)
|
1 sleep(3)
|
||||||
|
@ -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;
|
||||||
|
@ -11,3 +11,4 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
rpl_cross_version : Bug#42311 2009-03-27 joro rpl_cross_version fails on macosx
|
rpl_cross_version : Bug#42311 2009-03-27 joro rpl_cross_version fails on macosx
|
||||||
|
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);
|
||||||
@ -46,8 +48,11 @@ 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;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
SELECT * FROM test.t4 ORDER BY a;
|
SELECT * FROM test.t4 ORDER BY a;
|
||||||
|
@ -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;
|
@ -300,4 +300,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
|
@ -24,7 +24,7 @@
|
|||||||
# row format slow queries do not get slow query logged.
|
# row format slow queries do not get slow query logged.
|
||||||
|
|
||||||
source include/master-slave.inc;
|
source include/master-slave.inc;
|
||||||
source include/have_binlog_format_mixed_or_statement.inc;
|
source include/have_binlog_format_statement.inc;
|
||||||
|
|
||||||
|
|
||||||
# Prepare slave for different long_query_time we need to stop the slave
|
# Prepare slave for different long_query_time we need to stop the slave
|
||||||
|
@ -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;
|
||||||
@ -91,7 +93,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`;
|
||||||
|
|
||||||
@ -137,7 +143,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;
|
||||||
|
@ -1623,3 +1623,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";
|
@ -328,4 +328,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
|
||||||
|
@ -484,3 +484,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
|
||||||
|
@ -1016,6 +1016,18 @@ SELECT a, MAX(b) FROM t WHERE b > 0 AND b < 2 GROUP BY a;
|
|||||||
|
|
||||||
DROP TABLE t;
|
DROP TABLE t;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #48472: Loose index scan inappropriately chosen for some WHERE
|
||||||
|
--echo # conditions
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
@ -620,3 +620,40 @@ SHOW CREATE TABLE T1;
|
|||||||
INSERT INTO T1 (c2) values (0);
|
INSERT INTO T1 (c2) values (0);
|
||||||
SELECT * FROM T1;
|
SELECT * FROM T1;
|
||||||
DROP TABLE T1;
|
DROP TABLE T1;
|
||||||
|
|
||||||
|
##
|
||||||
|
# 49032: Use the correct function to read the AUTOINC column value
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS T1;
|
||||||
|
CREATE TABLE T1(C1 DOUBLE AUTO_INCREMENT KEY, C2 CHAR(10)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO T1(C1, C2) VALUES (1, 'innodb'), (3, 'innodb');
|
||||||
|
# Restart the server
|
||||||
|
-- source include/restart_mysqld.inc
|
||||||
|
INSERT INTO T1(C2) VALUES ('innodb');
|
||||||
|
SHOW CREATE TABLE T1;
|
||||||
|
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');
|
||||||
|
# Restart the server
|
||||||
|
-- source include/restart_mysqld.inc
|
||||||
|
INSERT INTO T1(C2) VALUES ('innodb');
|
||||||
|
SHOW CREATE TABLE T1;
|
||||||
|
DROP TABLE T1;
|
||||||
|
|
||||||
|
##
|
||||||
|
# 47720: REPLACE INTO Autoincrement column with negative values
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 SET c1 = 1;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
INSERT INTO t1 SET c1 = 2;
|
||||||
|
INSERT INTO t1 SET c1 = -1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
-- error ER_DUP_ENTRY,1062
|
||||||
|
INSERT INTO t1 SET c1 = -1;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
REPLACE INTO t1 VALUES (-1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -70,6 +70,40 @@ commit;
|
|||||||
set autocommit=default;
|
set autocommit=default;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #37183 insert ignore into .. select ... hangs
|
||||||
|
--echo # after deadlock was encountered
|
||||||
|
--echo #
|
||||||
|
connect (con1,localhost,root,,);
|
||||||
|
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;
|
||||||
|
|
||||||
|
--connection con1
|
||||||
|
begin;
|
||||||
|
update t1 set v=id*2 where id=1;
|
||||||
|
|
||||||
|
--connection default
|
||||||
|
begin;
|
||||||
|
update t1 set v=id*2 where id=2;
|
||||||
|
|
||||||
|
--connection con1
|
||||||
|
--error 1205
|
||||||
|
update t1 set v=id*2 where id=2;
|
||||||
|
|
||||||
|
--connection default
|
||||||
|
--error 1205
|
||||||
|
insert ignore into t2 select * from t1 where id=1;
|
||||||
|
rollback;
|
||||||
|
|
||||||
|
--connection con1
|
||||||
|
rollback;
|
||||||
|
|
||||||
|
--connection default
|
||||||
|
disconnect con1;
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#41756 Strange error messages about locks from InnoDB
|
--echo # Bug#41756 Strange error messages about locks from InnoDB
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -489,5 +489,51 @@ EXPLAIN SELECT * FROM t1 WHERE a = 'TEST' AND
|
|||||||
c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
|
c >= '2009-10-09 00:00:00.001' AND c <= '2009-10-09 00:00:00.00';
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #46175: NULL read_view and consistent read assertion
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
--disable_result_log
|
||||||
|
CONNECT (con1, localhost, root,,);
|
||||||
|
--enable_query_log
|
||||||
|
--enable_result_log
|
||||||
|
CONNECTION default;
|
||||||
|
|
||||||
|
DELIMITER |;
|
||||||
|
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|
|
||||||
|
DELIMITER ;|
|
||||||
|
|
||||||
|
--echo # Should not crash
|
||||||
|
--disable_query_log
|
||||||
|
--disable_result_log
|
||||||
|
--send CALL p1(1000)
|
||||||
|
CONNECTION con1;
|
||||||
|
--echo # Should not crash
|
||||||
|
CALL p1(1000);
|
||||||
|
|
||||||
|
CONNECTION default;
|
||||||
|
--reap
|
||||||
|
--enable_query_log
|
||||||
|
--enable_result_log
|
||||||
|
|
||||||
|
DISCONNECT con1;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -385,10 +385,16 @@ drop tables t1, t2;
|
|||||||
#
|
#
|
||||||
# Bug #27884: mysql --html does not quote HTML special characters in output
|
# Bug #27884: mysql --html does not quote HTML special characters in output
|
||||||
#
|
#
|
||||||
--exec $MYSQL --html test -e "select '< & >' as '<'"
|
--write_file $MYSQLTEST_VARDIR/tmp/bug27884.sql
|
||||||
|
SELECT '< & >' AS `<`;
|
||||||
|
EOF
|
||||||
|
--exec $MYSQL --html test < $MYSQLTEST_VARDIR/tmp/bug27884.sql
|
||||||
|
|
||||||
|
remove_file $MYSQLTEST_VARDIR/tmp/bug27884.sql;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #27884: mysql client + null byte
|
# Bug #28203: mysql client + null byte
|
||||||
#
|
#
|
||||||
create table t1 (a char(5));
|
create table t1 (a char(5));
|
||||||
insert into t1 values ('\0b\0');
|
insert into t1 values ('\0b\0');
|
||||||
@ -401,5 +407,5 @@ insert into t1 values ('\0b\0');
|
|||||||
--exec $MYSQL --xml test -e "select a from t1"
|
--exec $MYSQL --xml test -e "select a from t1"
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
--echo
|
|
||||||
--echo End of tests
|
--echo End of 5.0 tests
|
||||||
|
@ -390,4 +390,17 @@ SELECT DISTINCT b FROM t1, t2 GROUP BY a, b WITH ROLLUP;
|
|||||||
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #48475: DISTINCT is ignored with GROUP BY WITH ROLLUP
|
||||||
|
--echo # 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;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -867,6 +867,31 @@ SELECT
|
|||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #42760: Select doesn't return desired results when we have null
|
||||||
|
--echo # values
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT,
|
||||||
|
c INT,
|
||||||
|
UNIQUE KEY a_c (a,c),
|
||||||
|
KEY (a));
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1, 10), (2, NULL);
|
||||||
|
|
||||||
|
--echo # 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;
|
||||||
|
--echo # Must return 1 row
|
||||||
|
SELECT 1 AS col FROM t1 WHERE a=2 AND (c=10 OR c IS NULL) ORDER BY c;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #35206: select query result different if the key is indexed or not
|
# Bug #35206: select query result different if the key is indexed or not
|
||||||
#
|
#
|
||||||
|
@ -14,6 +14,15 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#48276: can't add column if subpartition exists
|
||||||
|
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;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#46639: 1030 (HY000): Got error 124 from storage engine on
|
# Bug#46639: 1030 (HY000): Got error 124 from storage engine on
|
||||||
# INSERT ... SELECT ...
|
# INSERT ... SELECT ...
|
||||||
@ -61,6 +70,17 @@ SELECT * FROM t1;
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#45904: Error when CHARSET=utf8 and subpartitioning
|
||||||
|
#
|
||||||
|
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;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#44059: rec_per_key on empty partition gives weird optimiser results
|
# Bug#44059: rec_per_key on empty partition gives weird optimiser results
|
||||||
#
|
#
|
||||||
@ -2031,11 +2051,14 @@ DROP TABLE t1;
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # Bug #45807: crash accessing partitioned table and sql_mode
|
--echo # Bug #45807: crash accessing partitioned table and sql_mode
|
||||||
--echo # contains ONLY_FULL_GROUP_BY
|
--echo # contains ONLY_FULL_GROUP_BY
|
||||||
|
--echo # Bug#46923: select count(*) from partitioned table fails with
|
||||||
|
--echo # ONLY_FULL_GROUP_BY
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
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;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET SESSION SQL_MODE=DEFAULT;
|
SET SESSION SQL_MODE=DEFAULT;
|
||||||
|
|
||||||
|
@ -1260,4 +1260,57 @@ SELECT str_to_date('', '%Y-%m-%d');
|
|||||||
|
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#48459: valgrind errors with query using 'Range checked for each
|
||||||
|
--echo # record'
|
||||||
|
--echo #
|
||||||
|
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 );
|
||||||
|
|
||||||
|
--echo # 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;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #48665: sql-bench's insert test fails due to wrong result
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a));
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (0,0), (1,1);
|
||||||
|
|
||||||
|
--replace_column 1 @ 2 @ 3 @ 5 @ 6 @ 7 @ 8 @ 9 @ 10 @
|
||||||
|
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);
|
||||||
|
|
||||||
|
--echo # 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);
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -3772,6 +3772,19 @@ INTO @var0;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #48458: simple query tries to allocate enormous amount of
|
||||||
|
--echo # memory
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1(a INT NOT NULL, b YEAR);
|
||||||
|
INSERT INTO t1 VALUES ();
|
||||||
|
CREATE TABLE t2(c INT);
|
||||||
|
--echo # 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);
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
@ -3918,4 +3931,37 @@ SELECT table1 .`time_key` field2 FROM B table1 LEFT JOIN BB JOIN A table5 ON
|
|||||||
|
|
||||||
drop table A,AA,B,BB;
|
drop table A,AA,B,BB;
|
||||||
--echo #end of test for bug#45266
|
--echo #end of test for bug#45266
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # BUG#48052: Valgrind warning - uninitialized value in init_read_record()
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
# Needed in 6.0 codebase
|
||||||
|
#--echo # Disable Index condition pushdown
|
||||||
|
#--replace_column 1 #
|
||||||
|
#SELECT @old_icp:=@@engine_condition_pushdown;
|
||||||
|
#SET SESSION engine_condition_pushdown = 'OFF';
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
# Needed in 6.0 codebase
|
||||||
|
#--echo # Restore old value for Index condition pushdown
|
||||||
|
#SET SESSION engine_condition_pushdown=@old_icp;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -12,6 +12,9 @@
|
|||||||
# mysqltest should be fixed to allow REPLACE_RESULT in error message
|
# mysqltest should be fixed to allow REPLACE_RESULT in error message
|
||||||
-- source include/not_embedded.inc
|
-- source include/not_embedded.inc
|
||||||
|
|
||||||
|
# Supress warnings written to the log file
|
||||||
|
call mtr.add_suppression("Column count of mysql.proc is wrong. Expected 20, found 19. The table is probably corrupted");
|
||||||
|
|
||||||
# Backup proc table
|
# Backup proc table
|
||||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||||
--copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/proc.frm
|
--copy_file $MYSQLD_DATADIR/mysql/proc.frm $MYSQLTEST_VARDIR/tmp/proc.frm
|
||||||
@ -38,15 +41,14 @@ create trigger t1_ai after insert on t1 for each row call bug14233();
|
|||||||
|
|
||||||
# Unsupported tampering with the mysql.proc definition
|
# Unsupported tampering with the mysql.proc definition
|
||||||
alter table mysql.proc drop type;
|
alter table mysql.proc drop type;
|
||||||
--replace_result $MYSQL_TEST_DIR .
|
--error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
|
||||||
--error ER_SP_PROC_TABLE_CORRUPT
|
|
||||||
call bug14233();
|
call bug14233();
|
||||||
--replace_result $MYSQL_TEST_DIR .
|
--error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
|
||||||
--error ER_SP_PROC_TABLE_CORRUPT
|
|
||||||
create view v1 as select bug14233_f();
|
create view v1 as select bug14233_f();
|
||||||
--replace_result $MYSQL_TEST_DIR .
|
--error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
|
||||||
--error ER_SP_PROC_TABLE_CORRUPT
|
|
||||||
insert into t1 values (0);
|
insert into t1 values (0);
|
||||||
|
--error ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
|
||||||
|
show procedure status;
|
||||||
|
|
||||||
flush table mysql.proc;
|
flush table mysql.proc;
|
||||||
|
|
||||||
@ -155,3 +157,43 @@ drop procedure bug14233_3;
|
|||||||
# Assert: These should show nothing.
|
# Assert: These should show nothing.
|
||||||
show procedure status where db=DATABASE();
|
show procedure status where db=DATABASE();
|
||||||
show function status where db=DATABASE();
|
show function status where db=DATABASE();
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#41726 upgrade from 5.0 to 5.1.30 crashes if you didn't run mysql_upgrade
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS proc_backup;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
--echo # Backup the proc table
|
||||||
|
|
||||||
|
RENAME TABLE mysql.proc TO proc_backup;
|
||||||
|
CREATE TABLE mysql.proc LIKE proc_backup;
|
||||||
|
FLUSH TABLE mysql.proc;
|
||||||
|
|
||||||
|
--echo # Test with a valid table.
|
||||||
|
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
SET @foo = 10;
|
||||||
|
CALL p1();
|
||||||
|
--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'
|
||||||
|
SHOW PROCEDURE STATUS;
|
||||||
|
|
||||||
|
--echo # Modify a field of the table.
|
||||||
|
|
||||||
|
ALTER TABLE mysql.proc MODIFY comment CHAR (32);
|
||||||
|
|
||||||
|
--error ER_CANNOT_LOAD_FROM_TABLE
|
||||||
|
CREATE PROCEDURE p2()
|
||||||
|
SET @foo = 10;
|
||||||
|
--echo # Procedure loaded from the cache
|
||||||
|
CALL p1();
|
||||||
|
--error ER_CANNOT_LOAD_FROM_TABLE
|
||||||
|
SHOW PROCEDURE STATUS;
|
||||||
|
|
||||||
|
DROP TABLE mysql.proc;
|
||||||
|
RENAME TABLE proc_backup TO mysql.proc;
|
||||||
|
FLUSH TABLE mysql.proc;
|
||||||
|
@ -865,6 +865,65 @@ DROP PROCEDURE p_suid;
|
|||||||
DROP FUNCTION f_suid;
|
DROP FUNCTION f_suid;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #48872 : Privileges for stored functions ignored if function name
|
||||||
|
--echo # is mixed case
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
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();
|
||||||
|
SELECT * FROM TestTab;
|
||||||
|
|
||||||
|
CONNECT (con_tester,localhost,tester,,B48872);
|
||||||
|
CONNECT (con_tester_denied,localhost,Tester,,B48872);
|
||||||
|
CONNECTION con_tester;
|
||||||
|
|
||||||
|
SELECT * FROM TestTab;
|
||||||
|
SELECT `f_Test`();
|
||||||
|
SELECT `F_TEST`();
|
||||||
|
SELECT f_Test();
|
||||||
|
SELECT F_TEST();
|
||||||
|
|
||||||
|
CONNECTION con_tester_denied;
|
||||||
|
|
||||||
|
--disable_result_log
|
||||||
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
|
SELECT * FROM TestTab;
|
||||||
|
--error ER_PROCACCESS_DENIED_ERROR
|
||||||
|
SELECT `f_Test`();
|
||||||
|
--error ER_PROCACCESS_DENIED_ERROR
|
||||||
|
SELECT `F_TEST`();
|
||||||
|
--error ER_PROCACCESS_DENIED_ERROR
|
||||||
|
SELECT f_Test();
|
||||||
|
--error ER_PROCACCESS_DENIED_ERROR
|
||||||
|
SELECT F_TEST();
|
||||||
|
--enable_result_log
|
||||||
|
SELECT `f_Test_denied`();
|
||||||
|
SELECT `F_TEST_DENIED`();
|
||||||
|
|
||||||
|
CONNECTION default;
|
||||||
|
DISCONNECT con_tester;
|
||||||
|
DISCONNECT con_tester_denied;
|
||||||
|
DROP TABLE `TestTab`;
|
||||||
|
DROP FUNCTION `f_Test`;
|
||||||
|
DROP FUNCTION `f_Test_denied`;
|
||||||
|
|
||||||
|
USE test;
|
||||||
|
DROP USER 'tester';
|
||||||
|
DROP USER 'Tester';
|
||||||
|
DROP DATABASE B48872;
|
||||||
|
|
||||||
--echo End of 5.0 tests.
|
--echo End of 5.0 tests.
|
||||||
|
|
||||||
# Wait till all disconnects are completed
|
# Wait till all disconnects are completed
|
||||||
|
@ -8258,6 +8258,73 @@ CALL p1;
|
|||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#47627: SET @@{global.session}.local_variable in stored routine causes crash
|
||||||
|
--echo # Bug#48626: Crash or lost connection using SET for declared variables with @@
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
DROP PROCEDURE IF EXISTS p2;
|
||||||
|
DROP PROCEDURE IF EXISTS p3;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
delimiter //;
|
||||||
|
|
||||||
|
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SET @@SESSION.v= 10;
|
||||||
|
END//
|
||||||
|
|
||||||
|
CREATE PROCEDURE p2()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SET v= 10;
|
||||||
|
END//
|
||||||
|
call p2()//
|
||||||
|
|
||||||
|
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||||
|
CREATE PROCEDURE p3()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SELECT @@SESSION.v;
|
||||||
|
END//
|
||||||
|
|
||||||
|
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||||
|
CREATE PROCEDURE p4()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SET @@GLOBAL.v= 10;
|
||||||
|
END//
|
||||||
|
|
||||||
|
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//
|
||||||
|
|
||||||
|
--error ER_UNKNOWN_SYSTEM_VARIABLE
|
||||||
|
CREATE PROCEDURE p6()
|
||||||
|
BEGIN
|
||||||
|
DECLARE v INT DEFAULT 0;
|
||||||
|
SET @@v= 0;
|
||||||
|
END//
|
||||||
|
|
||||||
|
delimiter ;//
|
||||||
|
|
||||||
|
SET @old_init_connect= @@GLOBAL.init_connect;
|
||||||
|
CALL p5();
|
||||||
|
SET @@GLOBAL.init_connect= @old_init_connect;
|
||||||
|
|
||||||
|
DROP PROCEDURE p2;
|
||||||
|
DROP PROCEDURE p5;
|
||||||
|
|
||||||
--echo # ------------------------------------------------------------------
|
--echo # ------------------------------------------------------------------
|
||||||
--echo # -- End of 5.1 tests
|
--echo # -- End of 5.1 tests
|
||||||
|
@ -1286,3 +1286,229 @@ CREATE TABLE t1 SELECT 1 % .1234567891234567891234567891234567891234567891234567
|
|||||||
DESCRIBE t1;
|
DESCRIBE t1;
|
||||||
SELECT my_col FROM t1;
|
SELECT my_col FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#45261: Crash, stored procedure + decimal
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 81 */ 100000000000000000000000000000000000000000000000000000000000000000000000000000001.1 /* 1 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 82 */ 1000000000000000000000000000000000000000000000000000000000000000000000000000000001
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 40 */ 1000000000000000000000000000000000000001.1000000000000000000000000000000000000001 /* 40 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 1 */ 1.10000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 80 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 1 */ 1.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
.100000000000000000000000000000000000000000000000000000000000000000000000000000001 /* 81 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 45 */ 123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345 /* 45 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 65 */ 12345678901234567890123456789012345678901234567890123456789012345.1 /* 1 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
/* 66 */ 123456789012345678901234567890123456789012345678901234567890123456.1 /* 1 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT
|
||||||
|
.123456789012345678901234567890123456789012345678901234567890123456 /* 66 */
|
||||||
|
AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 AS SELECT 123.1234567890123456789012345678901 /* 31 */ AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 SELECT 1.1 + CAST(1 AS DECIMAL(65,30)) AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Test that the integer and decimal parts are properly calculated.
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
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;
|
||||||
|
DESC t2;
|
||||||
|
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;
|
||||||
|
DESC t2;
|
||||||
|
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;
|
||||||
|
DESC t2;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Test that variables get maximum precision.
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET @decimal= 1.1;
|
||||||
|
CREATE TABLE t1 SELECT @decimal AS c1;
|
||||||
|
DESC t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #45261 : Crash, stored procedure + decimal
|
||||||
|
--echo # Original test by the reporter.
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--echo # should not crash
|
||||||
|
CREATE TABLE t1
|
||||||
|
SELECT .123456789012345678901234567890123456789012345678901234567890123456 AS a;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
delimiter |;
|
||||||
|
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|
|
||||||
|
delimiter ;|
|
||||||
|
--echo # should not crash
|
||||||
|
CALL test_proc();
|
||||||
|
DROP PROCEDURE test_proc;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #48370 Absolutely wrong calculations with GROUP BY and
|
||||||
|
--echo # decimal fields when using IF
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
--echo # 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;
|
||||||
|
|
||||||
|
DROP TABLE currencies, payments, sub_tasks;
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.1 tests
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user