mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 23:04:20 +01:00
Merge main tree to 5.1-build
This commit is contained in:
commit
29f6fb9699
265 changed files with 7124 additions and 4085 deletions
|
@ -1,4 +1,4 @@
|
||||||
[MYSQL]
|
[MYSQL]
|
||||||
post_commit_to = "commits@lists.mysql.com"
|
post_commit_to = "commits@lists.mysql.com"
|
||||||
post_push_to = "commits@lists.mysql.com"
|
post_push_to = "commits@lists.mysql.com"
|
||||||
tree_name = "mysql-5.1"
|
tree_name = "mysql-5.1-bugteam"
|
||||||
|
|
|
@ -98,6 +98,10 @@ IF(CYBOZU)
|
||||||
ADD_DEFINITIONS(-DCYBOZU)
|
ADD_DEFINITIONS(-DCYBOZU)
|
||||||
ENDIF(CYBOZU)
|
ENDIF(CYBOZU)
|
||||||
|
|
||||||
|
IF(EXTRA_DEBUG)
|
||||||
|
ADD_DEFINITIONS(-D EXTRA_DEBUG)
|
||||||
|
ENDIF(EXTRA_DEBUG)
|
||||||
|
|
||||||
# in some places we use DBUG_OFF
|
# in some places we use DBUG_OFF
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF")
|
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DDBUG_OFF")
|
||||||
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
|
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
|
||||||
|
|
|
@ -2020,7 +2020,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||||
{
|
{
|
||||||
if (!preserve_comments)
|
if (!preserve_comments)
|
||||||
{
|
{
|
||||||
// Skip spaces at the beggining of a statement
|
// Skip spaces at the beginning of a statement
|
||||||
if (my_isspace(charset_info,inchar) && (out == line) &&
|
if (my_isspace(charset_info,inchar) && (out == line) &&
|
||||||
buffer.is_empty())
|
buffer.is_empty())
|
||||||
continue;
|
continue;
|
||||||
|
@ -2103,37 +2103,6 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!*ml_comment && !*in_string &&
|
|
||||||
(end_of_line - pos) >= 10 &&
|
|
||||||
!my_strnncoll(charset_info, (uchar*) pos, 10,
|
|
||||||
(const uchar*) "delimiter ", 10))
|
|
||||||
{
|
|
||||||
// Flush previously accepted characters
|
|
||||||
if (out != line)
|
|
||||||
{
|
|
||||||
buffer.append(line, (uint32) (out - line));
|
|
||||||
out= line;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flush possible comments in the buffer
|
|
||||||
if (!buffer.is_empty())
|
|
||||||
{
|
|
||||||
if (com_go(&buffer, 0) > 0) // < 0 is not fatal
|
|
||||||
DBUG_RETURN(1);
|
|
||||||
buffer.length(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Delimiter wants the get rest of the given line as argument to
|
|
||||||
allow one to change ';' to ';;' and back
|
|
||||||
*/
|
|
||||||
buffer.append(pos);
|
|
||||||
if (com_delimiter(&buffer, pos) > 0)
|
|
||||||
DBUG_RETURN(1);
|
|
||||||
|
|
||||||
buffer.length(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if (!*ml_comment && !*in_string && is_prefix(pos, delimiter))
|
else if (!*ml_comment && !*in_string && is_prefix(pos, delimiter))
|
||||||
{
|
{
|
||||||
// Found a statement. Continue parsing after the delimiter
|
// Found a statement. Continue parsing after the delimiter
|
||||||
|
@ -2196,8 +2165,24 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
||||||
|
|
||||||
// comment to end of line
|
// comment to end of line
|
||||||
if (preserve_comments)
|
if (preserve_comments)
|
||||||
|
{
|
||||||
|
bool started_with_nothing= !buffer.length();
|
||||||
|
|
||||||
buffer.append(pos);
|
buffer.append(pos);
|
||||||
|
|
||||||
|
/*
|
||||||
|
A single-line comment by itself gets sent immediately so that
|
||||||
|
client commands (delimiter, status, etc) will be interpreted on
|
||||||
|
the next line.
|
||||||
|
*/
|
||||||
|
if (started_with_nothing)
|
||||||
|
{
|
||||||
|
if (com_go(&buffer, 0) > 0) // < 0 is not fatal
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
buffer.length(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (!*in_string && inchar == '/' && *(pos+1) == '*' &&
|
else if (!*in_string && inchar == '/' && *(pos+1) == '*' &&
|
||||||
|
|
|
@ -620,6 +620,20 @@ static int run_mysqlcheck_upgrade(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int run_mysqlcheck_fixnames(void)
|
||||||
|
{
|
||||||
|
verbose("Running 'mysqlcheck'...");
|
||||||
|
return run_tool(mysqlcheck_path,
|
||||||
|
NULL, /* Send output from mysqlcheck directly to screen */
|
||||||
|
"--no-defaults",
|
||||||
|
ds_args.str,
|
||||||
|
"--all-databases",
|
||||||
|
"--fix-db-names",
|
||||||
|
"--fix-table-names",
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const char *expected_errors[]=
|
static const char *expected_errors[]=
|
||||||
{
|
{
|
||||||
"ERROR 1060", /* Duplicate column name */
|
"ERROR 1060", /* Duplicate column name */
|
||||||
|
@ -782,7 +796,8 @@ int main(int argc, char **argv)
|
||||||
/*
|
/*
|
||||||
Run "mysqlcheck" and "mysql_fix_privilege_tables.sql"
|
Run "mysqlcheck" and "mysql_fix_privilege_tables.sql"
|
||||||
*/
|
*/
|
||||||
if (run_mysqlcheck_upgrade() ||
|
if (run_mysqlcheck_fixnames() ||
|
||||||
|
run_mysqlcheck_upgrade() ||
|
||||||
run_sql_fix_privilege_tables())
|
run_sql_fix_privilege_tables())
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -40,15 +40,13 @@ static uint verbose = 0, opt_mysql_port=0;
|
||||||
static int my_end_arg;
|
static int my_end_arg;
|
||||||
static char * opt_mysql_unix_port = 0;
|
static char * opt_mysql_unix_port = 0;
|
||||||
static char *opt_password = 0, *current_user = 0,
|
static char *opt_password = 0, *current_user = 0,
|
||||||
*default_charset = (char *)MYSQL_DEFAULT_CHARSET_NAME,
|
*default_charset= 0, *current_host= 0;
|
||||||
*current_host = 0;
|
|
||||||
static int first_error = 0;
|
static int first_error = 0;
|
||||||
DYNAMIC_ARRAY tables4repair;
|
DYNAMIC_ARRAY tables4repair;
|
||||||
#ifdef HAVE_SMEM
|
#ifdef HAVE_SMEM
|
||||||
static char *shared_memory_base_name=0;
|
static char *shared_memory_base_name=0;
|
||||||
#endif
|
#endif
|
||||||
static uint opt_protocol=0;
|
static uint opt_protocol=0;
|
||||||
static CHARSET_INFO *charset_info= &my_charset_latin1;
|
|
||||||
|
|
||||||
enum operations { DO_CHECK, DO_REPAIR, DO_ANALYZE, DO_OPTIMIZE, DO_UPGRADE };
|
enum operations { DO_CHECK, DO_REPAIR, DO_ANALYZE, DO_OPTIMIZE, DO_UPGRADE };
|
||||||
|
|
||||||
|
@ -282,12 +280,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||||
break;
|
break;
|
||||||
case OPT_FIX_DB_NAMES:
|
case OPT_FIX_DB_NAMES:
|
||||||
what_to_do= DO_UPGRADE;
|
what_to_do= DO_UPGRADE;
|
||||||
default_charset= (char*) "utf8";
|
|
||||||
opt_databases= 1;
|
opt_databases= 1;
|
||||||
break;
|
break;
|
||||||
case OPT_FIX_TABLE_NAMES:
|
case OPT_FIX_TABLE_NAMES:
|
||||||
what_to_do= DO_UPGRADE;
|
what_to_do= DO_UPGRADE;
|
||||||
default_charset= (char*) "utf8";
|
|
||||||
break;
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
if (argument)
|
if (argument)
|
||||||
|
@ -367,11 +363,20 @@ static int get_options(int *argc, char ***argv)
|
||||||
what_to_do = DO_CHECK;
|
what_to_do = DO_CHECK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: This variable is not yet used */
|
/*
|
||||||
if (strcmp(default_charset, charset_info->csname) &&
|
If there's no --default-character-set option given with
|
||||||
!(charset_info= get_charset_by_csname(default_charset,
|
--fix-table-name or --fix-db-name set the default character set to "utf8".
|
||||||
MY_CS_PRIMARY, MYF(MY_WME))))
|
*/
|
||||||
exit(1);
|
if (!default_charset && (opt_fix_db_names || opt_fix_table_names))
|
||||||
|
{
|
||||||
|
default_charset= (char*) "utf8";
|
||||||
|
}
|
||||||
|
if (default_charset && !get_charset_by_csname(default_charset, MY_CS_PRIMARY,
|
||||||
|
MYF(MY_WME)))
|
||||||
|
{
|
||||||
|
printf("Unsupported character set: %s\n", default_charset);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
if (*argc > 0 && opt_alldbs)
|
if (*argc > 0 && opt_alldbs)
|
||||||
{
|
{
|
||||||
printf("You should give only options, no arguments at all, with option\n");
|
printf("You should give only options, no arguments at all, with option\n");
|
||||||
|
@ -779,6 +784,8 @@ static int dbConnect(char *host, char *user, char *passwd)
|
||||||
if (shared_memory_base_name)
|
if (shared_memory_base_name)
|
||||||
mysql_options(&mysql_connection,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
|
mysql_options(&mysql_connection,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
|
||||||
#endif
|
#endif
|
||||||
|
if (default_charset)
|
||||||
|
mysql_options(&mysql_connection, MYSQL_SET_CHARSET_NAME, default_charset);
|
||||||
if (!(sock = mysql_real_connect(&mysql_connection, host, user, passwd,
|
if (!(sock = mysql_real_connect(&mysql_connection, host, user, passwd,
|
||||||
NULL, opt_mysql_port, opt_mysql_unix_port, 0)))
|
NULL, opt_mysql_port, opt_mysql_unix_port, 0)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1327,6 +1327,35 @@ static int run_tool(const char *tool_path, DYNAMIC_STRING *ds_res, ...)
|
||||||
DBUG_RETURN(ret);
|
DBUG_RETURN(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Test if diff is present. This is needed on Windows systems
|
||||||
|
as the OS returns 1 whether diff is successful or if it is
|
||||||
|
not present.
|
||||||
|
|
||||||
|
We run diff -v and look for output in stdout.
|
||||||
|
We don't redirect stderr to stdout to make for a simplified check
|
||||||
|
Windows will output '"diff"' is not recognized... to stderr if it is
|
||||||
|
not present.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int diff_check()
|
||||||
|
{
|
||||||
|
char buf[512]= {0};
|
||||||
|
FILE *res_file;
|
||||||
|
const char *cmd = "diff -v";
|
||||||
|
int have_diff = 0;
|
||||||
|
|
||||||
|
if (!(res_file= popen(cmd, "r")))
|
||||||
|
die("popen(\"%s\", \"r\") failed", cmd);
|
||||||
|
|
||||||
|
/* if diff is not present, nothing will be in stdout to increment have_diff */
|
||||||
|
if (fgets(buf, sizeof(buf), res_file))
|
||||||
|
{
|
||||||
|
have_diff += 1;
|
||||||
|
}
|
||||||
|
pclose(res_file);
|
||||||
|
return have_diff;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Show the diff of two files using the systems builtin diff
|
Show the diff of two files using the systems builtin diff
|
||||||
|
@ -1346,10 +1375,19 @@ void show_diff(DYNAMIC_STRING* ds,
|
||||||
{
|
{
|
||||||
|
|
||||||
DYNAMIC_STRING ds_tmp;
|
DYNAMIC_STRING ds_tmp;
|
||||||
|
int have_diff = 0;
|
||||||
|
|
||||||
if (init_dynamic_string(&ds_tmp, "", 256, 256))
|
if (init_dynamic_string(&ds_tmp, "", 256, 256))
|
||||||
die("Out of memory");
|
die("Out of memory");
|
||||||
|
|
||||||
|
/* determine if we have diff on Windows
|
||||||
|
needs special processing due to return values
|
||||||
|
on that OS
|
||||||
|
*/
|
||||||
|
have_diff = diff_check();
|
||||||
|
|
||||||
|
if (have_diff)
|
||||||
|
{
|
||||||
/* First try with unified diff */
|
/* First try with unified diff */
|
||||||
if (run_tool("diff",
|
if (run_tool("diff",
|
||||||
&ds_tmp, /* Get output from diff in ds_tmp */
|
&ds_tmp, /* Get output from diff in ds_tmp */
|
||||||
|
@ -1369,11 +1407,19 @@ void show_diff(DYNAMIC_STRING* ds,
|
||||||
filename2,
|
filename2,
|
||||||
"2>&1",
|
"2>&1",
|
||||||
NULL) > 1) /* Most "diff" tools return >1 if error */
|
NULL) > 1) /* Most "diff" tools return >1 if error */
|
||||||
|
{
|
||||||
|
have_diff= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(have_diff))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
Fallback to dump both files to result file and inform
|
Fallback to dump both files to result file and inform
|
||||||
about installing "diff"
|
about installing "diff"
|
||||||
*/
|
*/
|
||||||
|
|
||||||
dynstr_set(&ds_tmp, "");
|
dynstr_set(&ds_tmp, "");
|
||||||
|
|
||||||
dynstr_append(&ds_tmp,
|
dynstr_append(&ds_tmp,
|
||||||
|
@ -1398,7 +1444,6 @@ void show_diff(DYNAMIC_STRING* ds,
|
||||||
cat_file(&ds_tmp, filename2);
|
cat_file(&ds_tmp, filename2);
|
||||||
dynstr_append(&ds_tmp, "<<<<\n");
|
dynstr_append(&ds_tmp, "<<<<\n");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (ds)
|
if (ds)
|
||||||
{
|
{
|
||||||
|
|
|
@ -290,7 +290,8 @@ static void do_resolve()
|
||||||
char buf[1024], *p;
|
char buf[1024], *p;
|
||||||
while (fgets(buf, sizeof(buf), fp_dump))
|
while (fgets(buf, sizeof(buf), fp_dump))
|
||||||
{
|
{
|
||||||
p = buf;
|
/* skip bracket */
|
||||||
|
p= (p= strchr(buf, '[')) ? p+1 : buf;
|
||||||
/* skip space */
|
/* skip space */
|
||||||
while (my_isspace(&my_charset_latin1,*p))
|
while (my_isspace(&my_charset_latin1,*p))
|
||||||
++p;
|
++p;
|
||||||
|
|
|
@ -203,8 +203,8 @@ SSL_CTX* SSL_CTX_new(SSL_METHOD*);
|
||||||
SSL* SSL_new(SSL_CTX*);
|
SSL* SSL_new(SSL_CTX*);
|
||||||
int SSL_set_fd (SSL*, YASSL_SOCKET_T);
|
int SSL_set_fd (SSL*, YASSL_SOCKET_T);
|
||||||
YASSL_SOCKET_T SSL_get_fd(const SSL*);
|
YASSL_SOCKET_T SSL_get_fd(const SSL*);
|
||||||
int SSL_connect(SSL*); // if you get an error from connect
|
int SSL_connect(SSL*); /* if you get an error from connect
|
||||||
// see note at top of REAMDE
|
see note at top of REAMDE */
|
||||||
int SSL_write(SSL*, const void*, int);
|
int SSL_write(SSL*, const void*, int);
|
||||||
int SSL_read(SSL*, void*, int);
|
int SSL_read(SSL*, void*, int);
|
||||||
int SSL_accept(SSL*);
|
int SSL_accept(SSL*);
|
||||||
|
|
|
@ -250,6 +250,15 @@ inline double ulonglong2double(ulonglong value)
|
||||||
#define my_off_t2double(A) ulonglong2double(A)
|
#define my_off_t2double(A) ulonglong2double(A)
|
||||||
#endif /* _WIN64 */
|
#endif /* _WIN64 */
|
||||||
|
|
||||||
|
inline ulonglong double2ulonglong(double d)
|
||||||
|
{
|
||||||
|
double t= d - (double) 0x8000000000000000ULL;
|
||||||
|
|
||||||
|
if (t >= 0)
|
||||||
|
return ((ulonglong) t) + 0x8000000000000000ULL;
|
||||||
|
return (ulonglong) d;
|
||||||
|
}
|
||||||
|
|
||||||
#if SIZEOF_OFF_T > 4
|
#if SIZEOF_OFF_T > 4
|
||||||
#define lseek(A,B,C) _lseeki64((A),(longlong) (B),(C))
|
#define lseek(A,B,C) _lseeki64((A),(longlong) (B),(C))
|
||||||
#define tell(A) _telli64(A)
|
#define tell(A) _telli64(A)
|
||||||
|
|
|
@ -472,6 +472,7 @@ my_bool my_propagate_complex(CHARSET_INFO *cs, const uchar *str, size_t len);
|
||||||
uint my_string_repertoire(CHARSET_INFO *cs, const char *str, ulong len);
|
uint my_string_repertoire(CHARSET_INFO *cs, const char *str, ulong len);
|
||||||
my_bool my_charset_is_ascii_based(CHARSET_INFO *cs);
|
my_bool my_charset_is_ascii_based(CHARSET_INFO *cs);
|
||||||
my_bool my_charset_is_8bit_pure_ascii(CHARSET_INFO *cs);
|
my_bool my_charset_is_8bit_pure_ascii(CHARSET_INFO *cs);
|
||||||
|
uint my_charset_repertoire(CHARSET_INFO *cs);
|
||||||
|
|
||||||
|
|
||||||
#define _MY_U 01 /* Upper case */
|
#define _MY_U 01 /* Upper case */
|
||||||
|
|
|
@ -789,6 +789,9 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
||||||
#define ulonglong2double(A) ((double) (ulonglong) (A))
|
#define ulonglong2double(A) ((double) (ulonglong) (A))
|
||||||
#define my_off_t2double(A) ((double) (my_off_t) (A))
|
#define my_off_t2double(A) ((double) (my_off_t) (A))
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef double2ulonglong
|
||||||
|
#define double2ulonglong(A) ((ulonglong) (double) (A))
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef offsetof
|
#ifndef offsetof
|
||||||
|
|
|
@ -28,3 +28,5 @@ enable_warnings;
|
||||||
insert into t1 values (1);
|
insert into t1 values (1);
|
||||||
drop table tt1, t1;
|
drop table tt1, t1;
|
||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
|
FLUSH STATUS;
|
||||||
|
|
|
@ -145,6 +145,23 @@ select * from t3 order by a;
|
||||||
connection master;
|
connection master;
|
||||||
|
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#41986 Replication slave does not pick up proper AUTO_INCREMENT value for Innodb tables
|
||||||
|
#
|
||||||
|
connection master;
|
||||||
|
set auto_increment_increment=1;
|
||||||
|
set auto_increment_offset=1;
|
||||||
|
CREATE TABLE t1 (id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
|
||||||
|
show create table t1;
|
||||||
|
|
||||||
|
sync_slave_with_master;
|
||||||
|
show create table t1;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
# End cleanup
|
# End cleanup
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
31
mysql-test/include/check_events_off.inc
Normal file
31
mysql-test/include/check_events_off.inc
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
########## include/check_events_off.inc ####################################
|
||||||
|
# #
|
||||||
|
# Purpose: #
|
||||||
|
# Wait till we can expect that we have no event activity till the scheduler is #
|
||||||
|
# switched on again. #
|
||||||
|
# = There will be no modifications of user tables by existing events #
|
||||||
|
# except they use "INSERT DELAYED" or the server system variable #
|
||||||
|
# "concurrent_inserts" is not switched off. #
|
||||||
|
# Only some storage engines support concurrent_inserts" or "INSERT DELAYED". #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2008-12-19 mleich Implement this check needed for bug fixes in tests #
|
||||||
|
# #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# 1. Check that the server system variable shows the state needed
|
||||||
|
if (`SELECT @@global.event_scheduler <> 'OFF'`)
|
||||||
|
{
|
||||||
|
--echo # Error: We expect here that the event scheduler is switched off.
|
||||||
|
SELECT @@global.event_scheduler;
|
||||||
|
--echo # Thinkable reasons:
|
||||||
|
--echo # 1. SET GLOBAL event_scheduler = OFF had not the expected effect.
|
||||||
|
--echo # 2. Use of the current routine (include/check_events_off.inc)
|
||||||
|
--echo # within the wrong situation
|
||||||
|
--die
|
||||||
|
}
|
||||||
|
# 2. Wait till we have no event_scheduler session within the processlist
|
||||||
|
--source include/no_running_event_scheduler.inc
|
||||||
|
# 3. Wait till we have no event executor sessions within the processlist
|
||||||
|
--source include/no_running_events.inc
|
||||||
|
|
16
mysql-test/include/cleanup_fake_relay_log.inc
Normal file
16
mysql-test/include/cleanup_fake_relay_log.inc
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# Clean up files create by setup_fake_relay_log.inc.
|
||||||
|
#
|
||||||
|
# ==== Usage ====
|
||||||
|
#
|
||||||
|
# See setup_fake_relay_log.inc
|
||||||
|
|
||||||
|
--echo Cleaning up after setup_fake_relay_log.inc
|
||||||
|
|
||||||
|
# Remove files.
|
||||||
|
remove_file $_fake_relay_log;
|
||||||
|
remove_file $_fake_relay_index;
|
||||||
|
--disable_query_log
|
||||||
|
eval SET @@global.relay_log_purge= $_fake_relay_log_purge;
|
||||||
|
--enable_query_log
|
|
@ -617,10 +617,10 @@ call p_verify_status_increment(0, 0, 0, 0);
|
||||||
--echo
|
--echo
|
||||||
--echo # No test because of Bug#8729 "rename table fails on temporary table"
|
--echo # No test because of Bug#8729 "rename table fails on temporary table"
|
||||||
|
|
||||||
--echo # 24. DDL: TRUNCATE TEMPORARY TABLE, does not start a transaction
|
--echo # 24. DDL: TRUNCATE TEMPORARY TABLE
|
||||||
--echo
|
--echo
|
||||||
truncate table t2;
|
truncate table t2;
|
||||||
call p_verify_status_increment(2, 0, 2, 0);
|
call p_verify_status_increment(4, 0, 4, 0);
|
||||||
commit;
|
commit;
|
||||||
--echo # There is nothing left to commit
|
--echo # There is nothing left to commit
|
||||||
call p_verify_status_increment(0, 0, 0, 0);
|
call p_verify_status_increment(0, 0, 0, 0);
|
||||||
|
@ -671,8 +671,11 @@ call p_verify_status_increment(2, 2, 2, 2);
|
||||||
savepoint a;
|
savepoint a;
|
||||||
call p_verify_status_increment(0, 0, 0, 0);
|
call p_verify_status_increment(0, 0, 0, 0);
|
||||||
insert t1 set a=4;
|
insert t1 set a=4;
|
||||||
--echo # Sic: a bug. Binlog did not register itself this time.
|
--echo # Binlog does not register itself this time for other than the 1st
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
--echo # statement of the transaction with MIXED/STATEMENT binlog_format.
|
||||||
|
--echo # It needs registering with the ROW format. Therefore 1,0,2,2 are
|
||||||
|
--echo # the correct arguments to this test after bug#40221 fixed.
|
||||||
|
call p_verify_status_increment(1, 0, 2, 2);
|
||||||
release savepoint a;
|
release savepoint a;
|
||||||
rollback;
|
rollback;
|
||||||
call p_verify_status_increment(0, 0, 0, 0);
|
call p_verify_status_increment(0, 0, 0, 0);
|
||||||
|
@ -730,7 +733,7 @@ call p_verify_status_increment(1, 0, 1, 0);
|
||||||
rename table t4 to t3;
|
rename table t4 to t3;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(1, 0, 1, 0);
|
||||||
truncate table t3;
|
truncate table t3;
|
||||||
call p_verify_status_increment(2, 2, 2, 2);
|
call p_verify_status_increment(4, 4, 4, 4);
|
||||||
create view v1 as select * from t2;
|
create view v1 as select * from t2;
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
call p_verify_status_increment(1, 0, 1, 0);
|
||||||
check table t1;
|
check table t1;
|
||||||
|
|
|
@ -11,6 +11,6 @@ eval SET @@global.sort_buffer_size = $save;
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
if (!$mach32)
|
if (!$mach32)
|
||||||
{
|
{
|
||||||
skip Need a 32 bit machine;
|
skip Need a 32 bit machine/binary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,6 @@ eval SET @@session.sort_buffer_size = $save;
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
if (!$mach64)
|
if (!$mach64)
|
||||||
{
|
{
|
||||||
skip Need a 64 bit machine;
|
skip Need a 64 binary ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
mysql-test/include/have_simple_parser.inc
Normal file
16
mysql-test/include/have_simple_parser.inc
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#
|
||||||
|
# Check if server has support for loading udf's
|
||||||
|
# i.e it will support dlopen
|
||||||
|
#
|
||||||
|
--require r/have_dynamic_loading.require
|
||||||
|
disable_query_log;
|
||||||
|
show variables like 'have_dynamic_loading';
|
||||||
|
enable_query_log;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Check if the variable SIMPLE_PARSER is set
|
||||||
|
#
|
||||||
|
--require r/have_simple_parser.require
|
||||||
|
disable_query_log;
|
||||||
|
eval select LENGTH('$SIMPLE_PARSER') > 0 as 'have_simple_parser';
|
||||||
|
enable_query_log;
|
|
@ -501,4 +501,30 @@ SELECT b,a from t1 WHERE (b!='c' AND b!='f' && b!='h') OR
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # BUG#40974: Incorrect query results when using clause evaluated using range check
|
||||||
|
--echo #
|
||||||
|
create table t0 (a int);
|
||||||
|
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
create table t2(a int, b int);
|
||||||
|
insert into t2 values (1,1), (2, 1000);
|
||||||
|
create table t3 (a int, b int, filler char(100), key(a), key(b));
|
||||||
|
|
||||||
|
insert into t3 select 1000, 1000,'filler' from t0 A, t0 B, t0 C;
|
||||||
|
insert into t3 values (1,1,'data');
|
||||||
|
insert into t3 values (1,1,'data');
|
||||||
|
-- echo The plan should be ALL/ALL/ALL(Range checked for each record (index map: 0x3)
|
||||||
|
explain select * from t1
|
||||||
|
where exists (select 1 from t2, t3
|
||||||
|
where t2.a=t1.a and (t3.a=t2.b or t3.b=t2.b or t3.b=t2.b+1));
|
||||||
|
|
||||||
|
select * from t1
|
||||||
|
where exists (select 1 from t2, t3
|
||||||
|
where t2.a=t1.a and (t3.a=t2.b or t3.b=t2.b or t3.b=t2.b+1));
|
||||||
|
|
||||||
|
drop table t0, t1, t2, t3;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
|
@ -9,7 +9,6 @@ SET @min_flush_time = 0;
|
||||||
#SET @max_flush_time = 0;
|
#SET @max_flush_time = 0;
|
||||||
|
|
||||||
SET @default_key_buffer_size = 131072;
|
SET @default_key_buffer_size = 131072;
|
||||||
SET @min_key_buffer_size = 36;
|
|
||||||
|
|
||||||
#SET @default_join_buffer_size = 131072;
|
#SET @default_join_buffer_size = 131072;
|
||||||
#SET @min_join_buffer_size = 8200;
|
#SET @min_join_buffer_size = 8200;
|
||||||
|
|
23
mysql-test/include/no_running_event_scheduler.inc
Normal file
23
mysql-test/include/no_running_event_scheduler.inc
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
########## include/no_running_event_scheduler.inc ##########################
|
||||||
|
# #
|
||||||
|
# Wait till the event scheduler disappeared from processlist. #
|
||||||
|
# #
|
||||||
|
# The characteristics of the event_scheduler entry within the processlist is #
|
||||||
|
# user = 'event_scheduler' and command = 'Daemon'. I am not 100% sure if #
|
||||||
|
# ther is no short phase with command <> 'Daemon'. #
|
||||||
|
# A query with WHERE user = 'event_scheduler' only will also catch events in #
|
||||||
|
# startup phase. This is no problem since this phase is very short. #
|
||||||
|
# #
|
||||||
|
# A wait_timeout of >= 3 seconds was within experiments sufficient even on a #
|
||||||
|
# testing box with heavy parallel load. Therefore 5 seconds should be enough. #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2008-12-19 mleich Implement this check needed for test bug fixes #
|
||||||
|
# #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
let $wait_timeout= 5;
|
||||||
|
let $wait_condition=
|
||||||
|
SELECT COUNT(*) = 0 FROM information_schema.processlist
|
||||||
|
WHERE user = 'event_scheduler';
|
||||||
|
--source include/wait_condition.inc
|
25
mysql-test/include/no_running_events.inc
Normal file
25
mysql-test/include/no_running_events.inc
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
########## include/no_running_events.inc ###################################
|
||||||
|
# #
|
||||||
|
# Wait till all event executors have finished their work. #
|
||||||
|
# #
|
||||||
|
# Different event executors share the characteristics that their entry within #
|
||||||
|
# processlist contains command = 'Connect'. #
|
||||||
|
# Of course the corresponding query will also catch other connections being #
|
||||||
|
# within the connect phase. This is no problem since the connect phase is #
|
||||||
|
# usually very short. #
|
||||||
|
# #
|
||||||
|
# A wait_timeout of >= 3 seconds was during experiments in case of "simple" #
|
||||||
|
# SQL commands sufficient even on a testing box with heavy parallel load. #
|
||||||
|
# "simple" = no sleeps, no long running commands, no waiting for lock ... #
|
||||||
|
# We use here the default of 30 seconds because this wastes some time only in #
|
||||||
|
# case of unexpected situations. #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2008-12-19 mleich Implement this check needed for test bug fixes #
|
||||||
|
# #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
let $wait_condition=
|
||||||
|
SELECT COUNT(*) = 0 FROM information_schema.processlist
|
||||||
|
WHERE command = 'Connect';
|
||||||
|
--source include/wait_condition.inc
|
30
mysql-test/include/running_event_scheduler.inc
Normal file
30
mysql-test/include/running_event_scheduler.inc
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
############# include/running_event_scheduler.inc ##########################
|
||||||
|
# #
|
||||||
|
# Wait till the event scheduler reached its final state within the processlist.#
|
||||||
|
# #
|
||||||
|
# The characteristics of the event_scheduler entry within the processlist is #
|
||||||
|
# user = 'event_scheduler' and command = 'Daemon'. I am not 100% sure if #
|
||||||
|
# ther is no short phase with command <> 'Daemon'. #
|
||||||
|
# A query with WHERE user = 'event_scheduler' only will also catch events in #
|
||||||
|
# startup phase. #
|
||||||
|
# #
|
||||||
|
# Creation: #
|
||||||
|
# 2008-12-19 mleich Implement this check needed for test bug fixes #
|
||||||
|
# #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# 1. Check that the server system variable shows the state needed
|
||||||
|
if (`SELECT @@global.event_scheduler <> 'ON'`)
|
||||||
|
{
|
||||||
|
--echo # Error: We expect here that the event scheduler is switched on.
|
||||||
|
SELECT @@global.event_scheduler;
|
||||||
|
--echo # Thinkable reasons:
|
||||||
|
--echo # 1. SET GLOBAL event_scheduler = ON had not the expected effect.
|
||||||
|
--echo # 2. Use of the current routine (include/running_event_scheduler.inc)
|
||||||
|
--echo # within the wrong situation
|
||||||
|
--die
|
||||||
|
}
|
||||||
|
let $wait_condition=
|
||||||
|
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
||||||
|
WHERE user = 'event_scheduler' AND command = 'Daemon';
|
||||||
|
--source include/wait_condition.inc
|
78
mysql-test/include/setup_fake_relay_log.inc
Normal file
78
mysql-test/include/setup_fake_relay_log.inc
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# Setup replication from an existing relay log in the current
|
||||||
|
# connection.
|
||||||
|
#
|
||||||
|
# ==== Usage ====
|
||||||
|
#
|
||||||
|
# Make sure the slave is not running and issue:
|
||||||
|
#
|
||||||
|
# let $fake_relay_log= /path/to/fake-relay-log-file.000001
|
||||||
|
# source include/setup_fake_relay_log.inc;
|
||||||
|
# START SLAVE SQL_THREAD; # setup_fake_relay_log doesn't start slave
|
||||||
|
# ...
|
||||||
|
# source include/cleanup_fake_relay_log.inc
|
||||||
|
#
|
||||||
|
# You must run the server with --relay-log=FILE. You probably want to
|
||||||
|
# run with --replicate-same-server-id too.
|
||||||
|
#
|
||||||
|
# ==== Implementation ====
|
||||||
|
#
|
||||||
|
# First makes a sanity check, ensuring that the slave threads are not
|
||||||
|
# running. Then copies the $fake_relay_log to RELAY_BIN-fake.000001,
|
||||||
|
# where RELAY_BIN is the basename of the relay log, and updates
|
||||||
|
# RELAY_BIN.index. Finally issues CHANGE MASTER so that it uses the
|
||||||
|
# given files.
|
||||||
|
#
|
||||||
|
# ==== Side effects ====
|
||||||
|
#
|
||||||
|
# Creates a binlog file and a binlog index file, and sets
|
||||||
|
# @@global.relay_log_purge=1. All this is restored when you call
|
||||||
|
# cleanup_fake_relay_log.inc.
|
||||||
|
#
|
||||||
|
# Enables the query log.
|
||||||
|
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
|
||||||
|
# Print message.
|
||||||
|
let $_fake_relay_log_printable= `SELECT REPLACE('$fake_relay_log', '$MYSQL_TEST_DIR', 'MYSQL_TEST_DIR')`;
|
||||||
|
--echo Setting up fake replication from $_fake_relay_log_printable
|
||||||
|
|
||||||
|
# Sanity check.
|
||||||
|
let $_sql_running= query_get_value(SHOW SLAVE STATUS, Slave_SQL_Running, 1);
|
||||||
|
let $_io_running= query_get_value(SHOW SLAVE STATUS, Slave_IO_Running, 1);
|
||||||
|
if (`SELECT "$_sql_running" = "Yes" OR "$_io_running" = "Yes"`) {
|
||||||
|
--echo Error: Slave was running when test case sourced
|
||||||
|
--echo include/setup_fake_replication.inc
|
||||||
|
--echo Slave_IO_Running = $_io_running; Slave_SQL_Running = $_sql_running
|
||||||
|
--echo Printing some debug info:
|
||||||
|
SHOW SLAVE STATUS;
|
||||||
|
SHOW MASTER STATUS;
|
||||||
|
SHOW BINLOG EVENTS;
|
||||||
|
SHOW PROCESSLIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Read server variables.
|
||||||
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
|
let $_fake_filename= query_get_value(SHOW VARIABLES LIKE 'relay_log', Value, 1);
|
||||||
|
if (`SELECT '$_fake_filename' = ''`) {
|
||||||
|
--echo Badly written test case: relay_log variable is empty. Please use the
|
||||||
|
--echo server option --relay-log=FILE.
|
||||||
|
}
|
||||||
|
let $_fake_relay_log= $MYSQLD_DATADIR/$_fake_filename-fake.000001;
|
||||||
|
let $_fake_relay_index= $MYSQLD_DATADIR/$_fake_filename.index;
|
||||||
|
# Need to restore relay_log_purge in cleanup_fake_relay_log.inc, since
|
||||||
|
# CHANGE MASTER modifies it (see the manual for CHANGE MASTER).
|
||||||
|
let $_fake_relay_log_purge= `SELECT @@global.relay_log_purge`;
|
||||||
|
|
||||||
|
# Create relay log file.
|
||||||
|
copy_file $fake_relay_log $_fake_relay_log;
|
||||||
|
|
||||||
|
# Create relay log index.
|
||||||
|
eval SELECT '$_fake_relay_log' INTO OUTFILE '$_fake_relay_index';
|
||||||
|
|
||||||
|
# Setup replication from existing relay log.
|
||||||
|
eval CHANGE MASTER TO MASTER_HOST='dummy.localdomain', RELAY_LOG_FILE='$_fake_relay_log', RELAY_LOG_POS=4;
|
||||||
|
|
||||||
|
--enable_query_log
|
62
mysql-test/include/wait_condition_sp.inc
Normal file
62
mysql-test/include/wait_condition_sp.inc
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# SUMMARY
|
||||||
|
#
|
||||||
|
# Waits until the passed statement returns true, or the operation
|
||||||
|
# times out.
|
||||||
|
#
|
||||||
|
# USAGE
|
||||||
|
#
|
||||||
|
# let $wait_condition=
|
||||||
|
# SELECT c = 3 FROM t;
|
||||||
|
# --source include/wait_condition.inc
|
||||||
|
#
|
||||||
|
# OR
|
||||||
|
#
|
||||||
|
# let $wait_timeout= 60; # Override default 30 seconds with 60.
|
||||||
|
# let $wait_condition=
|
||||||
|
# SELECT c = 3 FROM t;
|
||||||
|
# --source include/wait_condition.inc
|
||||||
|
# --echo Executed the test condition $wait_condition_reps times
|
||||||
|
#
|
||||||
|
# EXAMPLE
|
||||||
|
# events_bugs.test, events_time_zone.test
|
||||||
|
#
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
|
||||||
|
let $wait_counter= 300;
|
||||||
|
if ($wait_timeout)
|
||||||
|
{
|
||||||
|
let $wait_counter= `SELECT $wait_timeout * 10`;
|
||||||
|
}
|
||||||
|
# Reset $wait_timeout so that its value won't be used on subsequent
|
||||||
|
# calls, and default will be used instead.
|
||||||
|
let $wait_timeout= 0;
|
||||||
|
|
||||||
|
# Keep track of how many times the wait condition is tested
|
||||||
|
# This is used by some tests (e.g., main.status)
|
||||||
|
let $wait_condition_reps= 0;
|
||||||
|
while ($wait_counter)
|
||||||
|
{
|
||||||
|
let $success= `$wait_condition`;
|
||||||
|
inc $wait_condition_reps;
|
||||||
|
if ($success)
|
||||||
|
{
|
||||||
|
let $wait_counter= 0;
|
||||||
|
}
|
||||||
|
if (!$success)
|
||||||
|
{
|
||||||
|
real_sleep 0.1;
|
||||||
|
dec $wait_counter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!$success)
|
||||||
|
{
|
||||||
|
echo Timeout in wait_condition.inc for $wait_condition;
|
||||||
|
show master status;
|
||||||
|
show slave status;
|
||||||
|
}
|
||||||
|
|
||||||
|
--enable_query_log
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
let $counter= 500;
|
let $counter= 500;
|
||||||
while ($mysql_errno)
|
while ($mysql_errno)
|
||||||
{
|
{
|
||||||
--error 0,2002,2006
|
--error 0,2002,2003,2006,2013
|
||||||
show status;
|
show status;
|
||||||
|
|
||||||
dec $counter;
|
dec $counter;
|
||||||
|
|
|
@ -9,7 +9,6 @@ SET @min_flush_time = 0;
|
||||||
#SET @max_flush_time = 0;
|
#SET @max_flush_time = 0;
|
||||||
|
|
||||||
SET @default_key_buffer_size= 131072;
|
SET @default_key_buffer_size= 131072;
|
||||||
SET @min_key_buffer_size= 8;
|
|
||||||
|
|
||||||
#SET @default_join_buffer_size = 131072;
|
#SET @default_join_buffer_size = 131072;
|
||||||
#SET @min_join_buffer_size = 8200;
|
#SET @min_join_buffer_size = 8200;
|
||||||
|
|
|
@ -412,7 +412,10 @@ sub mtr_report_stats ($) {
|
||||||
|
|
||||||
# When trying to set lower_case_table_names = 2
|
# When trying to set lower_case_table_names = 2
|
||||||
# on a case sensitive file system. Bug#37402.
|
# on a case sensitive file system. Bug#37402.
|
||||||
/lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./
|
/lower_case_table_names was set to 2, even though your the file system '.*' is case sensitive. Now setting lower_case_table_names to 0 to avoid future problems./ or
|
||||||
|
|
||||||
|
# this test is expected to print warnings
|
||||||
|
($testname eq 'main.innodb_bug39438')
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
next; # Skip these lines
|
next; # Skip these lines
|
||||||
|
|
|
@ -163,6 +163,7 @@ our $exe_my_print_defaults;
|
||||||
our $exe_perror;
|
our $exe_perror;
|
||||||
our $lib_udf_example;
|
our $lib_udf_example;
|
||||||
our $lib_example_plugin;
|
our $lib_example_plugin;
|
||||||
|
our $lib_simple_parser;
|
||||||
our $exe_libtool;
|
our $exe_libtool;
|
||||||
|
|
||||||
our $opt_bench= 0;
|
our $opt_bench= 0;
|
||||||
|
@ -1723,6 +1724,10 @@ sub executable_setup () {
|
||||||
mtr_file_exists(vs_config_dirs('storage/example', 'ha_example.dll'),
|
mtr_file_exists(vs_config_dirs('storage/example', 'ha_example.dll'),
|
||||||
"$glob_basedir/storage/example/.libs/ha_example.so",);
|
"$glob_basedir/storage/example/.libs/ha_example.so",);
|
||||||
|
|
||||||
|
# Look for the simple_parser library
|
||||||
|
$lib_simple_parser=
|
||||||
|
mtr_file_exists(vs_config_dirs('plugin/fulltext', 'mypluglib.dll'),
|
||||||
|
"$glob_basedir/plugin/fulltext/.libs/mypluglib.so",);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Look for mysqltest executable
|
# Look for mysqltest executable
|
||||||
|
@ -2205,6 +2210,14 @@ sub environment_setup () {
|
||||||
$ENV{'EXAMPLE_PLUGIN_OPT'}=
|
$ENV{'EXAMPLE_PLUGIN_OPT'}=
|
||||||
($lib_example_plugin ? "--plugin_dir=" . dirname($lib_example_plugin) : "");
|
($lib_example_plugin ? "--plugin_dir=" . dirname($lib_example_plugin) : "");
|
||||||
|
|
||||||
|
# ----------------------------------------------------
|
||||||
|
# Add the path where mysqld will find mypluglib.so
|
||||||
|
# ----------------------------------------------------
|
||||||
|
$ENV{'SIMPLE_PARSER'}=
|
||||||
|
($lib_simple_parser ? basename($lib_simple_parser) : "");
|
||||||
|
$ENV{'SIMPLE_PARSER_OPT'}=
|
||||||
|
($lib_simple_parser ? "--plugin_dir=" . dirname($lib_simple_parser) : "");
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# Setup env so childs can execute myisampack and myisamchk
|
# Setup env so childs can execute myisampack and myisamchk
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
|
@ -2392,6 +2405,9 @@ sub remove_stale_vardir () {
|
||||||
mtr_verbose("Removing $opt_vardir/");
|
mtr_verbose("Removing $opt_vardir/");
|
||||||
mtr_rmtree("$opt_vardir/");
|
mtr_rmtree("$opt_vardir/");
|
||||||
}
|
}
|
||||||
|
# Remove the "tmp" dir
|
||||||
|
mtr_verbose("Removing $opt_tmpdir/");
|
||||||
|
mtr_rmtree("$opt_tmpdir/");
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -996,6 +996,22 @@ SELECT * FROM t1;
|
||||||
v b
|
v b
|
||||||
abc 5
|
abc 5
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1 (a tinytext character set latin1);
|
||||||
|
alter table t1 convert to character set utf8;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` text
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a mediumtext character set latin1);
|
||||||
|
alter table t1 convert to character set utf8;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` longtext
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
drop table if exists t1, t2, t3;
|
drop table if exists t1, t2, t3;
|
||||||
create table t1 (i int);
|
create table t1 (i int);
|
||||||
|
|
|
@ -21,6 +21,7 @@ flush logs;
|
||||||
*** must be a warning master-bin.000001 was not found ***
|
*** must be a warning master-bin.000001 was not found ***
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1612 Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found
|
Warning 1612 Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found
|
||||||
|
Warning 1612 Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found
|
||||||
*** must show one record, of the active binlog, left in the index file after PURGE ***
|
*** must show one record, of the active binlog, left in the index file after PURGE ***
|
||||||
show binary logs;
|
show binary logs;
|
||||||
Log_name File_size
|
Log_name File_size
|
||||||
|
|
|
@ -683,10 +683,10 @@ SUCCESS
|
||||||
# 23. DDL: RENAME TEMPORARY TABLE, does not start a transaction
|
# 23. DDL: RENAME TEMPORARY TABLE, does not start a transaction
|
||||||
|
|
||||||
# No test because of Bug#8729 "rename table fails on temporary table"
|
# No test because of Bug#8729 "rename table fails on temporary table"
|
||||||
# 24. DDL: TRUNCATE TEMPORARY TABLE, does not start a transaction
|
# 24. DDL: TRUNCATE TEMPORARY TABLE
|
||||||
|
|
||||||
truncate table t2;
|
truncate table t2;
|
||||||
call p_verify_status_increment(2, 0, 2, 0);
|
call p_verify_status_increment(4, 0, 4, 0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
|
@ -770,8 +770,11 @@ call p_verify_status_increment(0, 0, 0, 0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
insert t1 set a=4;
|
insert t1 set a=4;
|
||||||
# Sic: a bug. Binlog did not register itself this time.
|
# Binlog does not register itself this time for other than the 1st
|
||||||
call p_verify_status_increment(1, 0, 1, 0);
|
# statement of the transaction with MIXED/STATEMENT binlog_format.
|
||||||
|
# It needs registering with the ROW format. Therefore 1,0,2,2 are
|
||||||
|
# the correct arguments to this test after bug#40221 fixed.
|
||||||
|
call p_verify_status_increment(1, 0, 2, 2);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
release savepoint a;
|
release savepoint a;
|
||||||
|
@ -850,7 +853,7 @@ call p_verify_status_increment(1, 0, 1, 0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
truncate table t3;
|
truncate table t3;
|
||||||
call p_verify_status_increment(2, 2, 2, 2);
|
call p_verify_status_increment(4, 4, 4, 4);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
create view v1 as select * from t2;
|
create view v1 as select * from t2;
|
||||||
|
|
|
@ -1890,5 +1890,7 @@ c1 c2
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
# -- End of Bug#34274
|
# -- End of Bug#34274
|
||||||
|
create table `me:i`(id int);
|
||||||
|
drop table `me:i`;
|
||||||
|
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
|
|
@ -5394,4 +5394,17 @@ select * from t1;
|
||||||
ERROR HY000: File './test/t1.CSV' not found (Errcode: 2)
|
ERROR HY000: File './test/t1.CSV' not found (Errcode: 2)
|
||||||
unlock tables;
|
unlock tables;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(a enum ('a') not null) engine=csv;
|
||||||
|
insert into t1 values (2);
|
||||||
|
Warnings:
|
||||||
|
Warning 1265 Data truncated for column 'a' at row 1
|
||||||
|
select * from t1 limit 1;
|
||||||
|
ERROR HY000: Table 't1' is marked as crashed and should be repaired
|
||||||
|
repair table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 repair Warning Data truncated for column 'a' at row 1
|
||||||
|
test.t1 repair status OK
|
||||||
|
select * from t1 limit 1;
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
|
|
@ -1157,4 +1157,57 @@ set names latin1;
|
||||||
select hex(char(0x41 using ucs2));
|
select hex(char(0x41 using ucs2));
|
||||||
hex(char(0x41 using ucs2))
|
hex(char(0x41 using ucs2))
|
||||||
0041
|
0041
|
||||||
|
SET character_set_connection=ucs2;
|
||||||
|
SELECT CHARSET(DAYNAME(19700101));
|
||||||
|
CHARSET(DAYNAME(19700101))
|
||||||
|
ucs2
|
||||||
|
SELECT CHARSET(MONTHNAME(19700101));
|
||||||
|
CHARSET(MONTHNAME(19700101))
|
||||||
|
ucs2
|
||||||
|
SELECT LOWER(DAYNAME(19700101));
|
||||||
|
LOWER(DAYNAME(19700101))
|
||||||
|
thursday
|
||||||
|
SELECT LOWER(MONTHNAME(19700101));
|
||||||
|
LOWER(MONTHNAME(19700101))
|
||||||
|
january
|
||||||
|
SELECT UPPER(DAYNAME(19700101));
|
||||||
|
UPPER(DAYNAME(19700101))
|
||||||
|
THURSDAY
|
||||||
|
SELECT UPPER(MONTHNAME(19700101));
|
||||||
|
UPPER(MONTHNAME(19700101))
|
||||||
|
JANUARY
|
||||||
|
SELECT HEX(MONTHNAME(19700101));
|
||||||
|
HEX(MONTHNAME(19700101))
|
||||||
|
004A0061006E0075006100720079
|
||||||
|
SELECT HEX(DAYNAME(19700101));
|
||||||
|
HEX(DAYNAME(19700101))
|
||||||
|
00540068007500720073006400610079
|
||||||
|
SET LC_TIME_NAMES=ru_RU;
|
||||||
|
SET NAMES utf8;
|
||||||
|
SET character_set_connection=ucs2;
|
||||||
|
SELECT CHARSET(DAYNAME(19700101));
|
||||||
|
CHARSET(DAYNAME(19700101))
|
||||||
|
ucs2
|
||||||
|
SELECT CHARSET(MONTHNAME(19700101));
|
||||||
|
CHARSET(MONTHNAME(19700101))
|
||||||
|
ucs2
|
||||||
|
SELECT LOWER(DAYNAME(19700101));
|
||||||
|
LOWER(DAYNAME(19700101))
|
||||||
|
четверг
|
||||||
|
SELECT LOWER(MONTHNAME(19700101));
|
||||||
|
LOWER(MONTHNAME(19700101))
|
||||||
|
января
|
||||||
|
SELECT UPPER(DAYNAME(19700101));
|
||||||
|
UPPER(DAYNAME(19700101))
|
||||||
|
ЧЕТВЕРГ
|
||||||
|
SELECT UPPER(MONTHNAME(19700101));
|
||||||
|
UPPER(MONTHNAME(19700101))
|
||||||
|
ЯНВАРЯ
|
||||||
|
SELECT HEX(MONTHNAME(19700101));
|
||||||
|
HEX(MONTHNAME(19700101))
|
||||||
|
042F043D043204300440044F
|
||||||
|
SELECT HEX(DAYNAME(19700101));
|
||||||
|
HEX(DAYNAME(19700101))
|
||||||
|
0427043504420432043504400433
|
||||||
|
SET character_set_connection=latin1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
|
|
@ -590,3 +590,13 @@ select str_to_date('04/30/2004 ', '%m/%d/%Y ');
|
||||||
str_to_date('04/30/2004 ', '%m/%d/%Y ')
|
str_to_date('04/30/2004 ', '%m/%d/%Y ')
|
||||||
2004-04-30
|
2004-04-30
|
||||||
"End of 4.1 tests"
|
"End of 4.1 tests"
|
||||||
|
SELECT DATE_FORMAT("0000-01-01",'%W %d %M %Y') as valid_date;
|
||||||
|
valid_date
|
||||||
|
Sunday 01 January 0000
|
||||||
|
SELECT DATE_FORMAT("0000-02-28",'%W %d %M %Y') as valid_date;
|
||||||
|
valid_date
|
||||||
|
Tuesday 28 February 0000
|
||||||
|
SELECT DATE_FORMAT("2009-01-01",'%W %d %M %Y') as valid_date;
|
||||||
|
valid_date
|
||||||
|
Thursday 01 January 2009
|
||||||
|
"End of 5.0 tests"
|
||||||
|
|
|
@ -3,6 +3,8 @@ drop database if exists mysqltest_db1;
|
||||||
drop database if exists mysqltest_db2;
|
drop database if exists mysqltest_db2;
|
||||||
create database events_test;
|
create database events_test;
|
||||||
use events_test;
|
use events_test;
|
||||||
|
set @concurrent_insert= @@global.concurrent_insert;
|
||||||
|
set @@global.concurrent_insert = 0;
|
||||||
select * from information_schema.global_variables where variable_name like 'event_scheduler';
|
select * from information_schema.global_variables where variable_name like 'event_scheduler';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
EVENT_SCHEDULER ON
|
EVENT_SCHEDULER ON
|
||||||
|
@ -60,7 +62,7 @@ select get_lock('test_bug16407', 60);
|
||||||
end|
|
end|
|
||||||
"Now if everything is fine the event has compiled and is locked"
|
"Now if everything is fine the event has compiled and is locked"
|
||||||
select /*1*/ user, host, db, info from information_schema.processlist
|
select /*1*/ user, host, db, info from information_schema.processlist
|
||||||
where info = 'select get_lock(\'test_bug16407\', 60)';
|
where state = 'User lock' and info = 'select get_lock(\'test_bug16407\', 60)';
|
||||||
user host db info
|
user host db info
|
||||||
root localhost events_test select get_lock('test_bug16407', 60)
|
root localhost events_test select get_lock('test_bug16407', 60)
|
||||||
select release_lock('test_bug16407');
|
select release_lock('test_bug16407');
|
||||||
|
@ -84,7 +86,7 @@ get_lock('ee_16407_2', 60)
|
||||||
set global event_scheduler= 1;
|
set global event_scheduler= 1;
|
||||||
"Another sql_mode test"
|
"Another sql_mode test"
|
||||||
set sql_mode="traditional";
|
set sql_mode="traditional";
|
||||||
create table events_smode_test(ev_name char(10), a date) engine=myisam;
|
create table events_smode_test(ev_name char(10), a date);
|
||||||
"This should never insert something"
|
"This should never insert something"
|
||||||
create event ee_16407_2 on schedule every 60 second do
|
create event ee_16407_2 on schedule every 60 second do
|
||||||
begin
|
begin
|
||||||
|
@ -92,7 +94,7 @@ select get_lock('ee_16407_2', 60) /*ee_16407_2*/;
|
||||||
select release_lock('ee_16407_2');
|
select release_lock('ee_16407_2');
|
||||||
insert into events_test.events_smode_test values('ee_16407_2','1980-19-02');
|
insert into events_test.events_smode_test values('ee_16407_2','1980-19-02');
|
||||||
end|
|
end|
|
||||||
insert into events_smode_test values ('test','1980-19-02')|
|
insert into events_test.events_smode_test values ('test','1980-19-02')|
|
||||||
ERROR 22007: Incorrect date value: '1980-19-02' for column 'a' at row 1
|
ERROR 22007: Incorrect date value: '1980-19-02' for column 'a' at row 1
|
||||||
"This is ok"
|
"This is ok"
|
||||||
create event ee_16407_3 on schedule every 60 second do
|
create event ee_16407_3 on schedule every 60 second do
|
||||||
|
@ -116,7 +118,7 @@ events_test ee_16407_2 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_
|
||||||
events_test ee_16407_3 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
events_test ee_16407_3 STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER
|
||||||
events_test ee_16407_4
|
events_test ee_16407_4
|
||||||
select /*2*/ user, host, db, info from information_schema.processlist
|
select /*2*/ user, host, db, info from information_schema.processlist
|
||||||
where info = 'select get_lock(\'ee_16407_2\', 60)';
|
where state = 'User lock' and info = 'select get_lock(\'ee_16407_2\', 60)';
|
||||||
user host db info
|
user host db info
|
||||||
root localhost events_test select get_lock('ee_16407_2', 60)
|
root localhost events_test select get_lock('ee_16407_2', 60)
|
||||||
root localhost events_test select get_lock('ee_16407_2', 60)
|
root localhost events_test select get_lock('ee_16407_2', 60)
|
||||||
|
@ -125,10 +127,10 @@ select release_lock('ee_16407_2');
|
||||||
release_lock('ee_16407_2')
|
release_lock('ee_16407_2')
|
||||||
1
|
1
|
||||||
select /*3*/ user, host, db, info from information_schema.processlist
|
select /*3*/ user, host, db, info from information_schema.processlist
|
||||||
where info = 'select get_lock(\'ee_16407_2\', 60)';
|
where state = 'User lock' and info = 'select get_lock(\'ee_16407_2\', 60)';
|
||||||
user host db info
|
user host db info
|
||||||
set global event_scheduler= off;
|
set global event_scheduler= off;
|
||||||
select * from events_smode_test order by ev_name, a;
|
select * from events_test.events_smode_test order by ev_name, a;
|
||||||
ev_name a
|
ev_name a
|
||||||
ee_16407_3 1980-02-19
|
ee_16407_3 1980-02-19
|
||||||
ee_16407_3 1980-02-29
|
ee_16407_3 1980-02-29
|
||||||
|
@ -143,7 +145,7 @@ drop event ee_16407_2;
|
||||||
drop event ee_16407_3;
|
drop event ee_16407_3;
|
||||||
drop event ee_16407_4;
|
drop event ee_16407_4;
|
||||||
"And now one last test regarding sql_mode and call of SP from an event"
|
"And now one last test regarding sql_mode and call of SP from an event"
|
||||||
delete from events_smode_test;
|
delete from events_test.events_smode_test;
|
||||||
set sql_mode='ansi';
|
set sql_mode='ansi';
|
||||||
select get_lock('ee_16407_5', 60);
|
select get_lock('ee_16407_5', 60);
|
||||||
get_lock('ee_16407_5', 60)
|
get_lock('ee_16407_5', 60)
|
||||||
|
@ -166,10 +168,8 @@ call events_test.ee_16407_6_pendant();
|
||||||
end|
|
end|
|
||||||
"Should have 2 locked processes"
|
"Should have 2 locked processes"
|
||||||
select /*4*/ user, host, db, info from information_schema.processlist
|
select /*4*/ user, host, db, info from information_schema.processlist
|
||||||
where (command!='Daemon' || user='event_scheduler') and (info is null or info not like '%processlist%')
|
where state = 'User lock' and info = 'select get_lock(\'ee_16407_5\', 60)';
|
||||||
order by info;
|
|
||||||
user host db info
|
user host db info
|
||||||
event_scheduler localhost NULL NULL
|
|
||||||
root localhost events_test select get_lock('ee_16407_5', 60)
|
root localhost events_test select get_lock('ee_16407_5', 60)
|
||||||
root localhost events_test select get_lock('ee_16407_5', 60)
|
root localhost events_test select get_lock('ee_16407_5', 60)
|
||||||
select release_lock('ee_16407_5');
|
select release_lock('ee_16407_5');
|
||||||
|
@ -177,11 +177,9 @@ release_lock('ee_16407_5')
|
||||||
1
|
1
|
||||||
"Should have 0 processes locked"
|
"Should have 0 processes locked"
|
||||||
select /*5*/ user, host, db, info from information_schema.processlist
|
select /*5*/ user, host, db, info from information_schema.processlist
|
||||||
where (command!='Daemon' || user='event_scheduler') and (info is null or info not like '%processlist%')
|
where state = 'User lock' and info = 'select get_lock(\'ee_16407_5\', 60)';
|
||||||
order by info;
|
|
||||||
user host db info
|
user host db info
|
||||||
event_scheduler localhost NULL NULL
|
select * from events_test.events_smode_test order by ev_name, a;
|
||||||
select * from events_smode_test order by ev_name, a;
|
|
||||||
ev_name a
|
ev_name a
|
||||||
ee_16407_6 2004-02-29
|
ee_16407_6 2004-02-29
|
||||||
"And here we check one more time before we drop the events"
|
"And here we check one more time before we drop the events"
|
||||||
|
@ -740,3 +738,4 @@ name
|
||||||
drop event e1;
|
drop event e1;
|
||||||
DROP DATABASE events_test;
|
DROP DATABASE events_test;
|
||||||
SET GLOBAL event_scheduler = 'ON';
|
SET GLOBAL event_scheduler = 'ON';
|
||||||
|
SET @@global.concurrent_insert = @concurrent_insert;
|
||||||
|
|
|
@ -62,18 +62,6 @@ CREATE EVENT event_4 ON SCHEDULE EVERY 1 SECOND ENDS NOW() + INTERVAL 1 SECOND
|
||||||
ON COMPLETION PRESERVE
|
ON COMPLETION PRESERVE
|
||||||
DO
|
DO
|
||||||
INSERT INTO table_4 VALUES (1);
|
INSERT INTO table_4 VALUES (1);
|
||||||
SELECT IF(SUM(a) >= 4, 'OK', 'ERROR') FROM table_1;
|
|
||||||
IF(SUM(a) >= 4, 'OK', 'ERROR')
|
|
||||||
OK
|
|
||||||
SELECT IF(SUM(a) >= 4, 'OK', 'ERROR') FROM table_2;
|
|
||||||
IF(SUM(a) >= 4, 'OK', 'ERROR')
|
|
||||||
OK
|
|
||||||
SELECT IF(SUM(a) >= 1, 'OK', 'ERROR') FROM table_3;
|
|
||||||
IF(SUM(a) >= 1, 'OK', 'ERROR')
|
|
||||||
OK
|
|
||||||
SELECT IF(SUM(a) >= 1, 'OK', 'ERROR') FROM table_4;
|
|
||||||
IF(SUM(a) >= 1, 'OK', 'ERROR')
|
|
||||||
OK
|
|
||||||
SELECT IF(TIME_TO_SEC(TIMEDIFF(ENDS,STARTS))=6, 'OK', 'ERROR')
|
SELECT IF(TIME_TO_SEC(TIMEDIFF(ENDS,STARTS))=6, 'OK', 'ERROR')
|
||||||
FROM INFORMATION_SCHEMA.EVENTS
|
FROM INFORMATION_SCHEMA.EVENTS
|
||||||
WHERE EVENT_SCHEMA=DATABASE() AND EVENT_NAME='event_2';
|
WHERE EVENT_SCHEMA=DATABASE() AND EVENT_NAME='event_2';
|
||||||
|
|
|
@ -522,3 +522,12 @@ WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||||
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 t1 ref b b 5 const 4 Using where
|
1 SIMPLE t1 ref b b 5 const 4 Using where
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(a CHAR(10));
|
||||||
|
INSERT INTO t1 VALUES('aaa15');
|
||||||
|
SELECT MATCH(a) AGAINST('aaa1* aaa14 aaa16' IN BOOLEAN MODE) FROM t1;
|
||||||
|
MATCH(a) AGAINST('aaa1* aaa14 aaa16' IN BOOLEAN MODE)
|
||||||
|
1
|
||||||
|
SELECT MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE) FROM t1;
|
||||||
|
MATCH(a) AGAINST('aaa1* aaa14 aaa15 aaa16' IN BOOLEAN MODE)
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
5
mysql-test/r/fulltext_plugin.result
Normal file
5
mysql-test/r/fulltext_plugin.result
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
INSTALL PLUGIN simple_parser SONAME 'mypluglib.so';
|
||||||
|
CREATE TABLE t1(a TEXT, b TEXT, FULLTEXT(a) WITH PARSER simple_parser);
|
||||||
|
ALTER TABLE t1 ADD FULLTEXT(b) WITH PARSER simple_parser;
|
||||||
|
DROP TABLE t1;
|
||||||
|
UNINSTALL PLUGIN simple_parser;
|
|
@ -176,4 +176,13 @@ IF((ROUND(t1.a,2)=1), 2,
|
||||||
IF((ROUND(t1.a,2)=1), 2,
|
IF((ROUND(t1.a,2)=1), 2,
|
||||||
IF((R
|
IF((R
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (c LONGTEXT);
|
||||||
|
INSERT INTO t1 VALUES(1), (2), (3), (4), ('12345678901234567890');
|
||||||
|
SELECT * FROM (SELECT MAX(IF(1, CAST(c AS UNSIGNED), 0)) FROM t1) AS te;
|
||||||
|
MAX(IF(1, CAST(c AS UNSIGNED), 0))
|
||||||
|
12345678901234567890
|
||||||
|
SELECT * FROM (SELECT MAX(IFNULL(CAST(c AS UNSIGNED), 0)) FROM t1) AS te;
|
||||||
|
MAX(IFNULL(CAST(c AS UNSIGNED), 0))
|
||||||
|
12345678901234567890
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
|
|
@ -575,4 +575,16 @@ id
|
||||||
select * from t1 where NOT id in (null, 1);
|
select * from t1 where NOT id in (null, 1);
|
||||||
id
|
id
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1(c0 INTEGER, c1 INTEGER, c2 INTEGER);
|
||||||
|
INSERT INTO t1 VALUES(1, 1, 1), (1, 1, 1);
|
||||||
|
SELECT CASE AVG (c0) WHEN c1 * c2 THEN 1 END FROM t1;
|
||||||
|
CASE AVG (c0) WHEN c1 * c2 THEN 1 END
|
||||||
|
1
|
||||||
|
SELECT CASE c1 * c2 WHEN SUM(c0) THEN 1 WHEN AVG(c0) THEN 2 END FROM t1;
|
||||||
|
CASE c1 * c2 WHEN SUM(c0) THEN 1 WHEN AVG(c0) THEN 2 END
|
||||||
|
2
|
||||||
|
SELECT CASE c1 WHEN c1 + 1 THEN 1 END, ABS(AVG(c0)) FROM t1;
|
||||||
|
CASE c1 WHEN c1 + 1 THEN 1 END ABS(AVG(c0))
|
||||||
|
NULL 1.0000
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
|
|
@ -717,8 +717,6 @@ insert(_latin2'abcd',2,3,_latin2'ef'),
|
||||||
replace(_latin2'abcd',_latin2'b',_latin2'B'),
|
replace(_latin2'abcd',_latin2'b',_latin2'B'),
|
||||||
encode('abcd','ab')
|
encode('abcd','ab')
|
||||||
;
|
;
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'format(130,10)' at row 1
|
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
|
@ -727,7 +725,7 @@ t1 CREATE TABLE `t1` (
|
||||||
`conv(130,16,10)` varchar(64) DEFAULT NULL,
|
`conv(130,16,10)` varchar(64) DEFAULT NULL,
|
||||||
`hex(130)` varchar(6) NOT NULL DEFAULT '',
|
`hex(130)` varchar(6) NOT NULL DEFAULT '',
|
||||||
`char(130)` varbinary(4) NOT NULL DEFAULT '',
|
`char(130)` varbinary(4) NOT NULL DEFAULT '',
|
||||||
`format(130,10)` varchar(4) NOT NULL DEFAULT '',
|
`format(130,10)` varchar(37) NOT NULL DEFAULT '',
|
||||||
`left(_latin2'a',1)` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
|
`left(_latin2'a',1)` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
|
||||||
`right(_latin2'a',1)` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
|
`right(_latin2'a',1)` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
|
||||||
`lcase(_latin2'a')` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
|
`lcase(_latin2'a')` varchar(1) CHARACTER SET latin2 NOT NULL DEFAULT '',
|
||||||
|
@ -2513,4 +2511,12 @@ SELECT HEX(c1) from v1;
|
||||||
HEX(c1)
|
HEX(c1)
|
||||||
414243
|
414243
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
create table t1(a float);
|
||||||
|
insert into t1 values (1.33);
|
||||||
|
select format(a, 2) from t1;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def format(a, 2) 253 49 4 Y 0 31 8
|
||||||
|
format(a, 2)
|
||||||
|
1.33
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
|
|
@ -592,6 +592,21 @@ unix_timestamp('1970-01-01 03:00:01')
|
||||||
select unix_timestamp('2038-01-19 07:14:07');
|
select unix_timestamp('2038-01-19 07:14:07');
|
||||||
unix_timestamp('2038-01-19 07:14:07')
|
unix_timestamp('2038-01-19 07:14:07')
|
||||||
0
|
0
|
||||||
|
SELECT CHARSET(DAYNAME(19700101));
|
||||||
|
CHARSET(DAYNAME(19700101))
|
||||||
|
latin1
|
||||||
|
SELECT CHARSET(MONTHNAME(19700101));
|
||||||
|
CHARSET(MONTHNAME(19700101))
|
||||||
|
latin1
|
||||||
|
SELECT LOWER(DAYNAME(19700101));
|
||||||
|
LOWER(DAYNAME(19700101))
|
||||||
|
thursday
|
||||||
|
SELECT LOWER(MONTHNAME(19700101));
|
||||||
|
LOWER(MONTHNAME(19700101))
|
||||||
|
january
|
||||||
|
SELECT COERCIBILITY(MONTHNAME('1970-01-01')),COERCIBILITY(DAYNAME('1970-01-01'));
|
||||||
|
COERCIBILITY(MONTHNAME('1970-01-01')) COERCIBILITY(DAYNAME('1970-01-01'))
|
||||||
|
4 4
|
||||||
CREATE TABLE t1 (datetime datetime, timestamp timestamp, date date, time time);
|
CREATE TABLE t1 (datetime datetime, timestamp timestamp, date date, time time);
|
||||||
INSERT INTO t1 values ("2001-01-02 03:04:05", "2002-01-02 03:04:05", "2003-01-02", "06:07:08");
|
INSERT INTO t1 values ("2001-01-02 03:04:05", "2002-01-02 03:04:05", "2003-01-02", "06:07:08");
|
||||||
SELECT * from t1;
|
SELECT * from t1;
|
||||||
|
|
|
@ -1246,6 +1246,11 @@ drop user 'greg'@'localhost';
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table test;
|
drop table test;
|
||||||
drop function test_function;
|
drop function test_function;
|
||||||
|
SELECT CURRENT_USER();
|
||||||
|
CURRENT_USER()
|
||||||
|
root@localhost
|
||||||
|
SET PASSWORD FOR CURRENT_USER() = PASSWORD("admin");
|
||||||
|
SET PASSWORD FOR CURRENT_USER() = PASSWORD("");
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
set names utf8;
|
set names utf8;
|
||||||
grant select on test.* to юзер_юзер@localhost;
|
grant select on test.* to юзер_юзер@localhost;
|
||||||
|
|
2
mysql-test/r/have_simple_parser.require
Normal file
2
mysql-test/r/have_simple_parser.require
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
have_simple_parser
|
||||||
|
1
|
|
@ -529,6 +529,34 @@ b a
|
||||||
y
|
y
|
||||||
z
|
z
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#40974: Incorrect query results when using clause evaluated using range check
|
||||||
|
#
|
||||||
|
create table t0 (a int);
|
||||||
|
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
create table t1 (a int);
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
create table t2(a int, b int);
|
||||||
|
insert into t2 values (1,1), (2, 1000);
|
||||||
|
create table t3 (a int, b int, filler char(100), key(a), key(b));
|
||||||
|
insert into t3 select 1000, 1000,'filler' from t0 A, t0 B, t0 C;
|
||||||
|
insert into t3 values (1,1,'data');
|
||||||
|
insert into t3 values (1,1,'data');
|
||||||
|
The plan should be ALL/ALL/ALL(Range checked for each record (index map: 0x3)
|
||||||
|
explain select * from t1
|
||||||
|
where exists (select 1 from t2, t3
|
||||||
|
where t2.a=t1.a and (t3.a=t2.b or t3.b=t2.b or t3.b=t2.b+1));
|
||||||
|
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 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL a,b NULL NULL NULL 1002 Range checked for each record (index map: 0x3)
|
||||||
|
select * from t1
|
||||||
|
where exists (select 1 from t2, t3
|
||||||
|
where t2.a=t1.a and (t3.a=t2.b or t3.b=t2.b or t3.b=t2.b+1));
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
drop table t0, t1, t2, t3;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
#---------------- ROR-index_merge tests -----------------------
|
#---------------- ROR-index_merge tests -----------------------
|
||||||
SET SESSION STORAGE_ENGINE = MyISAM;
|
SET SESSION STORAGE_ENGINE = MyISAM;
|
||||||
|
|
|
@ -1707,4 +1707,9 @@ where a.VARIABLE_NAME = b.VARIABLE_NAME;
|
||||||
a.VARIABLE_VALUE - b.VARIABLE_VALUE
|
a.VARIABLE_VALUE - b.VARIABLE_VALUE
|
||||||
2
|
2
|
||||||
drop table t0;
|
drop table t0;
|
||||||
|
CREATE TABLE t1(a INT) KEY_BLOCK_SIZE=1;
|
||||||
|
SELECT CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='t1';
|
||||||
|
CREATE_OPTIONS
|
||||||
|
KEY_BLOCK_SIZE=1
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests.
|
End of 5.1 tests.
|
||||||
|
|
|
@ -169,3 +169,413 @@ t1 CREATE TABLE `t1` (
|
||||||
PRIMARY KEY (`c1`)
|
PRIMARY KEY (`c1`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, c2 INT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL, 1);
|
||||||
|
DELETE FROM t1 WHERE c1 = 1;
|
||||||
|
INSERT INTO t1 VALUES (2,1);
|
||||||
|
INSERT INTO t1 VALUES (NULL,8);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2
|
||||||
|
2 1
|
||||||
|
3 8
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, c2 INT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL, 1);
|
||||||
|
DELETE FROM t1 WHERE c1 = 1;
|
||||||
|
INSERT INTO t1 VALUES (2,1), (NULL, 8);
|
||||||
|
INSERT INTO t1 VALUES (NULL,9);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2
|
||||||
|
2 1
|
||||||
|
3 8
|
||||||
|
5 9
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 100
|
||||||
|
auto_increment_offset 10
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (NULL),(5),(NULL);
|
||||||
|
INSERT INTO t1 VALUES (250),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
5
|
||||||
|
10
|
||||||
|
110
|
||||||
|
250
|
||||||
|
310
|
||||||
|
INSERT INTO t1 VALUES (1000);
|
||||||
|
SET @@INSERT_ID=400;
|
||||||
|
INSERT INTO t1 VALUES(NULL),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
5
|
||||||
|
10
|
||||||
|
110
|
||||||
|
250
|
||||||
|
310
|
||||||
|
400
|
||||||
|
410
|
||||||
|
1000
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(0);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
|
INSERT INTO t1 VALUES (-1), (NULL),(2),(NULL);
|
||||||
|
INSERT INTO t1 VALUES (250),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
10
|
||||||
|
110
|
||||||
|
250
|
||||||
|
410
|
||||||
|
SET @@INSERT_ID=400;
|
||||||
|
INSERT INTO t1 VALUES(NULL),(NULL);
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
10
|
||||||
|
110
|
||||||
|
250
|
||||||
|
410
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 INT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(-1);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-1
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 100
|
||||||
|
auto_increment_offset 10
|
||||||
|
INSERT INTO t1 VALUES (-2), (NULL),(2),(NULL);
|
||||||
|
INSERT INTO t1 VALUES (250),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-2
|
||||||
|
-1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
10
|
||||||
|
250
|
||||||
|
310
|
||||||
|
INSERT INTO t1 VALUES (1000);
|
||||||
|
SET @@INSERT_ID=400;
|
||||||
|
INSERT INTO t1 VALUES(NULL),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-2
|
||||||
|
-1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
10
|
||||||
|
250
|
||||||
|
310
|
||||||
|
400
|
||||||
|
410
|
||||||
|
1000
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(-1);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 100
|
||||||
|
auto_increment_offset 10
|
||||||
|
INSERT INTO t1 VALUES (-2);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
INSERT INTO t1 VALUES (2);
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
INSERT INTO t1 VALUES (250);
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
10
|
||||||
|
110
|
||||||
|
210
|
||||||
|
250
|
||||||
|
310
|
||||||
|
INSERT INTO t1 VALUES (1000);
|
||||||
|
SET @@INSERT_ID=400;
|
||||||
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
10
|
||||||
|
110
|
||||||
|
210
|
||||||
|
250
|
||||||
|
310
|
||||||
|
400
|
||||||
|
1000
|
||||||
|
1010
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 INT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(-1);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=100, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 100
|
||||||
|
auto_increment_offset 10
|
||||||
|
INSERT INTO t1 VALUES (-2),(NULL),(2),(NULL);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'c1' at row 1
|
||||||
|
INSERT INTO t1 VALUES (250),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
10
|
||||||
|
110
|
||||||
|
210
|
||||||
|
250
|
||||||
|
410
|
||||||
|
INSERT INTO t1 VALUES (1000);
|
||||||
|
SET @@INSERT_ID=400;
|
||||||
|
INSERT INTO t1 VALUES(NULL),(NULL);
|
||||||
|
Got one of the listed errors
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
10
|
||||||
|
110
|
||||||
|
210
|
||||||
|
250
|
||||||
|
410
|
||||||
|
1000
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
INSERT INTO t1 VALUES (9223372036854775794);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
9223372036854775794
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 2
|
||||||
|
auto_increment_offset 10
|
||||||
|
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
9223372036854775794
|
||||||
|
9223372036854775796
|
||||||
|
9223372036854775798
|
||||||
|
9223372036854775800
|
||||||
|
9223372036854775802
|
||||||
|
9223372036854775804
|
||||||
|
9223372036854775806
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
INSERT INTO t1 VALUES (18446744073709551603);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
18446744073709551603
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=2, @@SESSION.AUTO_INCREMENT_OFFSET=10;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 2
|
||||||
|
auto_increment_offset 10
|
||||||
|
INSERT INTO t1 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
18446744073709551603
|
||||||
|
18446744073709551604
|
||||||
|
18446744073709551606
|
||||||
|
18446744073709551608
|
||||||
|
18446744073709551610
|
||||||
|
18446744073709551612
|
||||||
|
18446744073709551614
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
INSERT INTO t1 VALUES (18446744073709551603);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
18446744073709551603
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=5, @@SESSION.AUTO_INCREMENT_OFFSET=7;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 5
|
||||||
|
auto_increment_offset 7
|
||||||
|
INSERT INTO t1 VALUES (NULL),(NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
18446744073709551603
|
||||||
|
18446744073709551607
|
||||||
|
18446744073709551612
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 BIGINT AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
INSERT INTO t1 VALUES(-9223372036854775806);
|
||||||
|
INSERT INTO t1 VALUES(-9223372036854775807);
|
||||||
|
INSERT INTO t1 VALUES(-9223372036854775808);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-9223372036854775808
|
||||||
|
-9223372036854775807
|
||||||
|
-9223372036854775806
|
||||||
|
1
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=3, @@SESSION.AUTO_INCREMENT_OFFSET=3;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 3
|
||||||
|
auto_increment_offset 3
|
||||||
|
INSERT INTO t1 VALUES (NULL),(NULL), (NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
-9223372036854775808
|
||||||
|
-9223372036854775807
|
||||||
|
-9223372036854775806
|
||||||
|
1
|
||||||
|
3
|
||||||
|
6
|
||||||
|
9
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1, @@SESSION.AUTO_INCREMENT_OFFSET=1;
|
||||||
|
SET @@INSERT_ID=1;
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 1
|
||||||
|
auto_increment_offset 1
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1051 Unknown table 't1'
|
||||||
|
CREATE TABLE t1 (c1 BIGINT UNSIGNED AUTO_INCREMENT, PRIMARY KEY(c1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(NULL);
|
||||||
|
INSERT INTO t1 VALUES (18446744073709551610);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
18446744073709551610
|
||||||
|
SET @@SESSION.AUTO_INCREMENT_INCREMENT=1152921504606846976, @@SESSION.AUTO_INCREMENT_OFFSET=1152921504606846976;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect auto_increment_increment value: '1152921504606846976'
|
||||||
|
Warning 1292 Truncated incorrect auto_increment_offset value: '1152921504606846976'
|
||||||
|
SHOW VARIABLES LIKE "%auto_inc%";
|
||||||
|
Variable_name Value
|
||||||
|
auto_increment_increment 65535
|
||||||
|
auto_increment_offset 65535
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
18446744073709551610
|
||||||
|
18446744073709551615
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
|
@ -3295,3 +3295,11 @@ info: Records: 5 Duplicates: 0 Warnings: 0
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
affected rows: 0
|
affected rows: 0
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
Variable_name Value
|
||||||
|
Handler_update 0
|
||||||
|
Variable_name Value
|
||||||
|
Handler_delete 0
|
||||||
|
Variable_name Value
|
||||||
|
Handler_update 1
|
||||||
|
Variable_name Value
|
||||||
|
Handler_delete 1
|
||||||
|
|
11
mysql-test/r/innodb_bug38231.result
Normal file
11
mysql-test/r/innodb_bug38231.result
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
SET storage_engine=InnoDB;
|
||||||
|
INSERT INTO bug38231 VALUES (1), (10), (300);
|
||||||
|
SET autocommit=0;
|
||||||
|
SELECT * FROM bug38231 FOR UPDATE;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
10
|
||||||
|
300
|
||||||
|
TRUNCATE TABLE bug38231;
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE bug38231;
|
1
mysql-test/r/innodb_bug39438.result
Normal file
1
mysql-test/r/innodb_bug39438.result
Normal file
|
@ -0,0 +1 @@
|
||||||
|
SET storage_engine=InnoDB;
|
|
@ -1683,3 +1683,167 @@ CREATE INDEX i1 on t1 (a(3));
|
||||||
SELECT * FROM t1 WHERE a = 'abcde';
|
SELECT * FROM t1 WHERE a = 'abcde';
|
||||||
a
|
a
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE foo (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c(3)),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=innodb;
|
||||||
|
CREATE TABLE foo2 (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=innodb;
|
||||||
|
CREATE TABLE bar (a int, b int, c char(10),
|
||||||
|
PRIMARY KEY (c(3)),
|
||||||
|
KEY b (b)
|
||||||
|
) engine=myisam;
|
||||||
|
INSERT INTO foo VALUES
|
||||||
|
(1,2,'abcdefghij'), (2,3,''), (3,4,'klmnopqrst'),
|
||||||
|
(4,5,'uvwxyz'), (5,6,'meotnsyglt'), (4,5,'asfdewe');
|
||||||
|
INSERT INTO bar SELECT * FROM foo;
|
||||||
|
INSERT INTO foo2 SELECT * FROM foo;
|
||||||
|
EXPLAIN SELECT c FROM bar WHERE b>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table bar
|
||||||
|
type ALL
|
||||||
|
possible_keys b
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where
|
||||||
|
EXPLAIN SELECT c FROM foo WHERE b>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table foo
|
||||||
|
type ALL
|
||||||
|
possible_keys b
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where
|
||||||
|
EXPLAIN SELECT c FROM foo2 WHERE b>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table foo2
|
||||||
|
type range
|
||||||
|
possible_keys b
|
||||||
|
key b
|
||||||
|
key_len 5
|
||||||
|
ref NULL
|
||||||
|
rows 3
|
||||||
|
Extra Using where; Using index
|
||||||
|
EXPLAIN SELECT c FROM bar WHERE c>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table bar
|
||||||
|
type ALL
|
||||||
|
possible_keys PRIMARY
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where
|
||||||
|
EXPLAIN SELECT c FROM foo WHERE c>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table foo
|
||||||
|
type ALL
|
||||||
|
possible_keys PRIMARY
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where
|
||||||
|
EXPLAIN SELECT c FROM foo2 WHERE c>2;;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table foo2
|
||||||
|
type index
|
||||||
|
possible_keys PRIMARY
|
||||||
|
key b
|
||||||
|
key_len 5
|
||||||
|
ref NULL
|
||||||
|
rows 6
|
||||||
|
Extra Using where; Using index
|
||||||
|
DROP TABLE foo, bar, foo2;
|
||||||
|
DROP TABLE IF EXISTS t1,t3,t2;
|
||||||
|
DROP FUNCTION IF EXISTS f1;
|
||||||
|
CREATE FUNCTION f1() RETURNS VARCHAR(250)
|
||||||
|
BEGIN
|
||||||
|
return 'hhhhhhh' ;
|
||||||
|
END|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(20), b VARCHAR(20), c VARCHAR(20)) ENGINE=INNODB;
|
||||||
|
BEGIN WORK;
|
||||||
|
CREATE TEMPORARY TABLE t2 (a VARCHAR(20), b VARCHAR(20), c varchar(20)) ENGINE=INNODB;
|
||||||
|
CREATE TEMPORARY TABLE t3 LIKE t2;
|
||||||
|
INSERT INTO t1 VALUES ('a','b',NULL),('c','d',NULL),('e','f',NULL);
|
||||||
|
SET @stmt := CONCAT('INSERT INTO t2 SELECT tbl.a, tbl.b, f1()',' FROM t1 tbl');
|
||||||
|
PREPARE stmt1 FROM @stmt;
|
||||||
|
SET @stmt := CONCAT('INSERT INTO t3', ' SELECT * FROM t2');
|
||||||
|
PREPARE stmt3 FROM @stmt;
|
||||||
|
EXECUTE stmt1;
|
||||||
|
COMMIT;
|
||||||
|
DEALLOCATE PREPARE stmt1;
|
||||||
|
DEALLOCATE PREPARE stmt3;
|
||||||
|
DROP TABLE t1,t3,t2;
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
DROP TABLE IF EXISTS t1,t2;
|
||||||
|
CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||||
|
CREATE TABLE t2 (id INT PRIMARY KEY,
|
||||||
|
t1_id INT, INDEX par_ind (t1_id),
|
||||||
|
FOREIGN KEY (t1_id) REFERENCES t1(id)) ENGINE=INNODB;
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
INSERT INTO t2 VALUES (3,2);
|
||||||
|
SET AUTOCOMMIT = 0;
|
||||||
|
START TRANSACTION;
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
COMMIT;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
START TRANSACTION;
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SET AUTOCOMMIT = 1;
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
COMMIT;
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `t2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `t1` (`id`))
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DELETE FROM t2 WHERE id = 3;
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
2
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id
|
||||||
|
TRUNCATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
End of 5.1 tests
|
||||||
|
|
21
mysql-test/r/innodb_mysql_rbk.result
Normal file
21
mysql-test/r/innodb_mysql_rbk.result
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
CREATE TABLE t1(a INT, b INT NOT NULL, PRIMARY KEY (a)) ENGINE=innodb
|
||||||
|
DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7);
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE;
|
||||||
|
a b
|
||||||
|
3 3
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET b=b+12 WHERE a > 2 ORDER BY a;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
ROLLBACK;
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT * FROM t1 WHERE b=3 LIMIT 1 FOR UPDATE;
|
||||||
|
a b
|
||||||
|
3 3
|
||||||
|
START TRANSACTION;
|
||||||
|
UPDATE t1 SET b=10 WHERE a > 1 ORDER BY a;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
SELECT * FROM t1 WHERE b = 10;
|
||||||
|
a b
|
||||||
|
DROP TABLE t1;
|
|
@ -10,10 +10,7 @@ create table t2 (a INT);
|
||||||
SELECT @@log_bin_trust_function_creators;
|
SELECT @@log_bin_trust_function_creators;
|
||||||
@@log_bin_trust_function_creators
|
@@log_bin_trust_function_creators
|
||||||
0
|
0
|
||||||
SELECT @@sql_log_bin;
|
## Creating new function f1 fails because no DETERMINISTIC ###
|
||||||
@@sql_log_bin
|
|
||||||
1
|
|
||||||
## Creating new function f1 ##
|
|
||||||
CREATE FUNCTION f1(a INT) RETURNS INT
|
CREATE FUNCTION f1(a INT) RETURNS INT
|
||||||
BEGIN
|
BEGIN
|
||||||
IF (a < 3) THEN
|
IF (a < 3) THEN
|
||||||
|
@ -21,8 +18,24 @@ INSERT INTO t2 VALUES (a);
|
||||||
END IF;
|
END IF;
|
||||||
RETURN 1;
|
RETURN 1;
|
||||||
END|
|
END|
|
||||||
'Bug: Create Function should give error here because non-super user';
|
ERROR HY000: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
|
||||||
'is creating function here';
|
## Creating new function f1 fails because non-super user ##
|
||||||
|
CREATE FUNCTION f1(a INT) RETURNS INT DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
IF (a < 3) THEN
|
||||||
|
INSERT INTO t2 VALUES (a);
|
||||||
|
END IF;
|
||||||
|
RETURN 1;
|
||||||
|
END|
|
||||||
|
ERROR HY000: You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
|
||||||
|
## Creating new function f1 succeeds ##
|
||||||
|
CREATE FUNCTION f1(a INT) RETURNS INT DETERMINISTIC
|
||||||
|
BEGIN
|
||||||
|
IF (a < 3) THEN
|
||||||
|
INSERT INTO t2 VALUES (a);
|
||||||
|
END IF;
|
||||||
|
RETURN 1;
|
||||||
|
END|
|
||||||
## Creating new table t1 ##
|
## Creating new table t1 ##
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
## Inserting some records in t1 ##
|
## Inserting some records in t1 ##
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
SET @old_general_log= @@global.general_log;
|
||||||
|
SET @old_general_log_file= @@global.general_log_file;
|
||||||
|
SET @old_slow_query_log= @@global.slow_query_log;
|
||||||
|
SET @old_slow_query_log_file= @@global.slow_query_log_file;
|
||||||
set global general_log= OFF;
|
set global general_log= OFF;
|
||||||
truncate table mysql.general_log;
|
truncate table mysql.general_log;
|
||||||
truncate table mysql.slow_log;
|
truncate table mysql.slow_log;
|
||||||
|
@ -33,20 +37,26 @@ general_log ON
|
||||||
log ON
|
log ON
|
||||||
log_slow_queries OFF
|
log_slow_queries OFF
|
||||||
slow_query_log OFF
|
slow_query_log OFF
|
||||||
set session long_query_time=1;
|
# Establish connection con1 (user=root)
|
||||||
select sleep(2);
|
# Switch to connection con1
|
||||||
sleep(2)
|
set @long_query_time = <long_query_time>;
|
||||||
|
set session long_query_time = @long_query_time;
|
||||||
|
select sleep(@long_query_time + 1);
|
||||||
|
sleep(@long_query_time + 1)
|
||||||
0
|
0
|
||||||
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
|
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
|
||||||
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
||||||
|
# Switch to connection default
|
||||||
set global slow_query_log= ON;
|
set global slow_query_log= ON;
|
||||||
set session long_query_time=1;
|
# Switch to connection con1
|
||||||
select sleep(2);
|
set session long_query_time = @long_query_time;
|
||||||
sleep(2)
|
select sleep(@long_query_time + 1);
|
||||||
|
sleep(@long_query_time + 1)
|
||||||
0
|
0
|
||||||
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
|
select * from mysql.slow_log where sql_text NOT LIKE '%slow_log%';
|
||||||
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
start_time user_host query_time lock_time rows_sent rows_examined db last_insert_id insert_id server_id sql_text
|
||||||
TIMESTAMP USER_HOST QUERY_TIME 00:00:00 1 0 test 0 0 1 select sleep(2)
|
TIMESTAMP USER_HOST QUERY_TIME 00:00:00 1 0 test 0 0 1 select sleep(@long_query_time + 1)
|
||||||
|
# Switch to connection default
|
||||||
show global variables
|
show global variables
|
||||||
where Variable_name = 'log' or Variable_name = 'log_slow_queries' or
|
where Variable_name = 'log' or Variable_name = 'log_slow_queries' or
|
||||||
Variable_name = 'general_log' or Variable_name = 'slow_query_log';
|
Variable_name = 'general_log' or Variable_name = 'slow_query_log';
|
||||||
|
@ -92,8 +102,8 @@ slow_query_log_file #
|
||||||
show variables like 'log_output';
|
show variables like 'log_output';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
log_output FILE,TABLE
|
log_output FILE,TABLE
|
||||||
set global general_log_file='/not exiting path/log.master';
|
set global general_log_file='/not existing path/log.master';
|
||||||
ERROR 42000: Variable 'general_log_file' can't be set to the value of '/not exiting path/log.master'
|
ERROR 42000: Variable 'general_log_file' can't be set to the value of '/not existing path/log.master'
|
||||||
set global general_log_file='MYSQLTEST_VARDIR';
|
set global general_log_file='MYSQLTEST_VARDIR';
|
||||||
ERROR 42000: Variable 'general_log_file' can't be set to the value of 'MYSQLTEST_VARDIR'
|
ERROR 42000: Variable 'general_log_file' can't be set to the value of 'MYSQLTEST_VARDIR'
|
||||||
set global general_log_file='';
|
set global general_log_file='';
|
||||||
|
@ -153,8 +163,10 @@ select * from mysql.general_log;
|
||||||
event_time user_host thread_id server_id command_type argument
|
event_time user_host thread_id server_id command_type argument
|
||||||
TIMESTAMP USER_HOST # 1 Query drop table t1
|
TIMESTAMP USER_HOST # 1 Query drop table t1
|
||||||
TIMESTAMP USER_HOST # 1 Query select * from mysql.general_log
|
TIMESTAMP USER_HOST # 1 Query select * from mysql.general_log
|
||||||
SET @old_general_log_state = @@global.general_log;
|
SET @@global.general_log = @old_general_log;
|
||||||
SET @old_slow_log_state = @@global.slow_query_log;
|
SET @@global.general_log_file = @old_general_log_file;
|
||||||
|
SET @@global.slow_query_log = @old_slow_query_log;
|
||||||
|
SET @@global.slow_query_log_file = @old_slow_query_log_file;
|
||||||
SET GLOBAL general_log = ON;
|
SET GLOBAL general_log = ON;
|
||||||
SET GLOBAL slow_query_log = ON;
|
SET GLOBAL slow_query_log = ON;
|
||||||
FLUSH TABLES WITH READ LOCK;
|
FLUSH TABLES WITH READ LOCK;
|
||||||
|
@ -173,10 +185,9 @@ SET GLOBAL READ_ONLY = ON;
|
||||||
SET GLOBAL general_log = ON;
|
SET GLOBAL general_log = ON;
|
||||||
SET GLOBAL slow_query_log = ON;
|
SET GLOBAL slow_query_log = ON;
|
||||||
SET GLOBAL READ_ONLY = OFF;
|
SET GLOBAL READ_ONLY = OFF;
|
||||||
SET GLOBAL general_log = @old_general_log_state;
|
SET GLOBAL general_log = @old_general_log;
|
||||||
SET GLOBAL slow_query_log = @old_slow_log_state;
|
SET GLOBAL slow_query_log = @old_slow_query_log;
|
||||||
SET @old_general_log_state = @@global.general_log;
|
SET GLOBAL general_log = ON;
|
||||||
SET @old_slow_log_state = @@global.slow_query_log;
|
|
||||||
SHOW VARIABLES LIKE 'general_log';
|
SHOW VARIABLES LIKE 'general_log';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
general_log ON
|
general_log ON
|
||||||
|
@ -239,29 +250,24 @@ log_slow_queries ON
|
||||||
SELECT @@slow_query_log, @@log_slow_queries;
|
SELECT @@slow_query_log, @@log_slow_queries;
|
||||||
@@slow_query_log @@log_slow_queries
|
@@slow_query_log @@log_slow_queries
|
||||||
1 1
|
1 1
|
||||||
SET GLOBAL general_log = @old_general_log_state;
|
SET GLOBAL general_log = @old_general_log;
|
||||||
SET GLOBAL slow_query_log = @old_slow_log_state;
|
SET GLOBAL slow_query_log = @old_slow_query_log;
|
||||||
set @old_general_log_file= @@global.general_log_file;
|
SET GLOBAL general_log_file= CONCAT('/not existing path/log.maste', 'r');
|
||||||
set @old_slow_query_log_file= @@global.slow_query_log_file;
|
ERROR 42000: Variable 'general_log_file' can't be set to the value of '/not existing path/log.master'
|
||||||
set global general_log_file= concat('/not exiting path/log.maste', 'r');
|
SET GLOBAL general_log_file= NULL;
|
||||||
ERROR 42000: Variable 'general_log_file' can't be set to the value of '/not exiting path/log.master'
|
|
||||||
set global general_log_file= NULL;
|
|
||||||
ERROR 42000: Variable 'general_log_file' can't be set to the value of 'NULL'
|
ERROR 42000: Variable 'general_log_file' can't be set to the value of 'NULL'
|
||||||
set global slow_query_log_file= concat('/not exiting path/log.maste', 'r');
|
SET GLOBAL slow_query_log_file= CONCAT('/not existing path/log.maste', 'r');
|
||||||
ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of '/not exiting path/log.master'
|
ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of '/not existing path/log.master'
|
||||||
set global slow_query_log_file= NULL;
|
SET GLOBAL slow_query_log_file= NULL;
|
||||||
ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of 'NULL'
|
ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of 'NULL'
|
||||||
set global general_log_file= @old_general_log_file;
|
SET GLOBAL general_log_file= @old_general_log_file;
|
||||||
set global slow_query_log_file= @old_slow_query_log_file;
|
SET GLOBAL slow_query_log_file= @old_slow_query_log_file;
|
||||||
|
|
||||||
# --
|
# --
|
||||||
# -- Bug#32748: Inconsistent handling of assignments to
|
# -- Bug#32748: Inconsistent handling of assignments to
|
||||||
# -- general_log_file/slow_query_log_file.
|
# -- general_log_file/slow_query_log_file.
|
||||||
# --
|
# --
|
||||||
|
|
||||||
SET @general_log_file_saved = @@global.general_log_file;
|
|
||||||
SET @slow_query_log_file_saved = @@global.slow_query_log_file;
|
|
||||||
|
|
||||||
SET GLOBAL general_log_file = 'bug32748.query.log';
|
SET GLOBAL general_log_file = 'bug32748.query.log';
|
||||||
SET GLOBAL slow_query_log_file = 'bug32748.slow.log';
|
SET GLOBAL slow_query_log_file = 'bug32748.slow.log';
|
||||||
|
|
||||||
|
@ -270,8 +276,8 @@ Variable_name Value
|
||||||
general_log_file bug32748.query.log
|
general_log_file bug32748.query.log
|
||||||
slow_query_log_file bug32748.slow.log
|
slow_query_log_file bug32748.slow.log
|
||||||
|
|
||||||
SET GLOBAL general_log_file = @general_log_file_saved;
|
SET GLOBAL general_log_file = @old_general_log_file;
|
||||||
SET GLOBAL slow_query_log_file = @slow_query_log_file_saved;
|
SET GLOBAL slow_query_log_file = @old_slow_query_log_file;
|
||||||
|
|
||||||
# -- End of Bug#32748.
|
# -- End of Bug#32748.
|
||||||
deprecated:
|
deprecated:
|
||||||
|
@ -298,4 +304,13 @@ SET GLOBAL general_log_file = @my_glf;
|
||||||
SET GLOBAL slow_query_log_file = @my_sqlf;
|
SET GLOBAL slow_query_log_file = @my_sqlf;
|
||||||
SET GLOBAL general_log = DEFAULT;
|
SET GLOBAL general_log = DEFAULT;
|
||||||
SET GLOBAL slow_query_log = DEFAULT;
|
SET GLOBAL slow_query_log = DEFAULT;
|
||||||
|
SET @@global.general_log = @old_general_log;
|
||||||
|
SET @@global.general_log_file = @old_general_log_file;
|
||||||
|
SET @@global.slow_query_log = @old_slow_query_log;
|
||||||
|
SET @@global.slow_query_log_file = @old_slow_query_log_file;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
# Close connection con1
|
||||||
|
SET global general_log = @old_general_log;
|
||||||
|
SET global general_log_file = @old_general_log_file;
|
||||||
|
SET global slow_query_log = @old_slow_query_log;
|
||||||
|
SET global slow_query_log_file = @old_slow_query_log_file;
|
||||||
|
|
|
@ -40,3 +40,4 @@ count(*)
|
||||||
65536
|
65536
|
||||||
DROP PROCEDURE sp_addRec;
|
DROP PROCEDURE sp_addRec;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SET @@global.myisam_data_pointer_size = default;
|
||||||
|
|
|
@ -27,3 +27,25 @@ CHECK TABLE t1 EXTENDED;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1(f1 int, f2 char(255));
|
||||||
|
insert into t1 values(1, 'foo'), (2, 'bar');
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
flush tables;
|
||||||
|
optimize table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 optimize error Table 'test.t1' is read only
|
||||||
|
Warnings:
|
||||||
|
Error 1036 Table 't1' is read only
|
||||||
|
drop table t1;
|
||||||
|
|
|
@ -180,6 +180,14 @@ ERROR at line 1: DELIMITER cannot contain a backslash character
|
||||||
1
|
1
|
||||||
This is a file starting with UTF8 BOM 0xEFBBBF
|
This is a file starting with UTF8 BOM 0xEFBBBF
|
||||||
This is a file starting with UTF8 BOM 0xEFBBBF
|
This is a file starting with UTF8 BOM 0xEFBBBF
|
||||||
|
delimiter
|
||||||
|
1
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
@z:='1' @z=database()
|
||||||
|
1 NULL
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
WARNING: --server-arg option not supported in this configuration.
|
WARNING: --server-arg option not supported in this configuration.
|
||||||
Warning (Code 1286): Unknown table engine 'nonexistent'
|
Warning (Code 1286): Unknown table engine 'nonexistent'
|
||||||
|
|
|
@ -130,3 +130,58 @@ v1
|
||||||
v-1
|
v-1
|
||||||
drop view v1, `v-1`;
|
drop view v1, `v-1`;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
SET NAMES utf8;
|
||||||
|
CREATE TABLE `#mysql50#@` (a INT);
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
#mysql50#@
|
||||||
|
SET NAMES DEFAULT;
|
||||||
|
mysqlcheck --fix-table-names --databases test
|
||||||
|
SET NAMES utf8;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
@
|
||||||
|
DROP TABLE `@`;
|
||||||
|
CREATE TABLE `я` (a INT);
|
||||||
|
SET NAMES DEFAULT;
|
||||||
|
mysqlcheck --default-character-set="latin1" --databases test
|
||||||
|
test.?
|
||||||
|
Error : Table doesn't exist
|
||||||
|
error : Corrupt
|
||||||
|
mysqlcheck --default-character-set="utf8" --databases test
|
||||||
|
test.я OK
|
||||||
|
SET NAMES utf8;
|
||||||
|
DROP TABLE `я`;
|
||||||
|
SET NAMES DEFAULT;
|
||||||
|
CREATE DATABASE `#mysql50#a@b`;
|
||||||
|
USE `#mysql50#a@b`;
|
||||||
|
CREATE TABLE `#mysql50#c@d` (a INT);
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
|
||||||
|
WHERE TRIGGER_SCHEMA="#mysql50#a@b" ORDER BY trigger_name;
|
||||||
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
|
NULL #mysql50#a@b tr1 INSERT NULL #mysql50#a@b #mysql50#c@d 0 NULL SET NEW.a = 10 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
|
NULL #mysql50#a@b tr2 INSERT NULL #mysql50#a@b t1 0 NULL SET NEW.a = 100 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
|
Warnings:
|
||||||
|
Warning 1603 Triggers for table `#mysql50#a@b`.`#mysql50#c@d` have no creation context
|
||||||
|
Warning 1603 Triggers for table `#mysql50#a@b`.`t1` have no creation context
|
||||||
|
mysqlcheck --fix-db-names --fix-table-names --all-databases
|
||||||
|
USE `a@b`;
|
||||||
|
SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
|
||||||
|
WHERE TRIGGER_SCHEMA="a@b" ORDER BY trigger_name;
|
||||||
|
TRIGGER_CATALOG TRIGGER_SCHEMA TRIGGER_NAME EVENT_MANIPULATION EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE ACTION_ORDER ACTION_CONDITION ACTION_STATEMENT ACTION_ORIENTATION ACTION_TIMING ACTION_REFERENCE_OLD_TABLE ACTION_REFERENCE_NEW_TABLE ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW CREATED SQL_MODE DEFINER CHARACTER_SET_CLIENT COLLATION_CONNECTION DATABASE_COLLATION
|
||||||
|
NULL a@b tr1 INSERT NULL a@b c@d 0 NULL SET NEW.a = 10 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
NULL a@b tr2 INSERT NULL a@b t1 0 NULL SET NEW.a = 100 * NEW.a ROW BEFORE NULL NULL OLD NEW NULL root@localhost utf8 utf8_general_ci latin1_swedish_ci
|
||||||
|
INSERT INTO `c@d` VALUES (2), (1);
|
||||||
|
SELECT * FROM `c@d`;
|
||||||
|
a
|
||||||
|
20
|
||||||
|
10
|
||||||
|
INSERT INTO t1 VALUES (3), (5);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
300
|
||||||
|
500
|
||||||
|
DROP DATABASE `a@b`;
|
||||||
|
USE test;
|
||||||
|
End of 5.1 tests
|
||||||
|
|
|
@ -324,7 +324,7 @@ partition by hash (a)
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(27) NOT NULL DEFAULT '\0\0\0\0',
|
`a` bit(27) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY HASH (a)
|
/*!50100 PARTITION BY HASH (a)
|
||||||
|
|
128
mysql-test/r/partition_innodb_semi_consistent.result
Normal file
128
mysql-test/r/partition_innodb_semi_consistent.result
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
drop table if exists t1;
|
||||||
|
set binlog_format=mixed;
|
||||||
|
set session transaction isolation level read committed;
|
||||||
|
create table t1(a int not null)
|
||||||
|
engine=innodb
|
||||||
|
DEFAULT CHARSET=latin1
|
||||||
|
PARTITION BY RANGE(a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (20),
|
||||||
|
PARTITION p1 VALUES LESS THAN MAXVALUE);
|
||||||
|
insert into t1 values (1),(2),(3),(4),(5),(6),(7);
|
||||||
|
set autocommit=0;
|
||||||
|
select * from t1 where a=3 lock in share mode;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
set binlog_format=mixed;
|
||||||
|
set session transaction isolation level read committed;
|
||||||
|
set autocommit=0;
|
||||||
|
update t1 set a=10 where a=5;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
commit;
|
||||||
|
update t1 set a=10 where a=5;
|
||||||
|
select * from t1 where a=2 for update;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
select * from t1 where a=2 limit 1 for update;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
update t1 set a=11 where a=6;
|
||||||
|
update t1 set a=12 where a=2;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
update t1 set a=13 where a=1;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
commit;
|
||||||
|
update t1 set a=14 where a=1;
|
||||||
|
commit;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
10
|
||||||
|
11
|
||||||
|
14
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
7
|
||||||
|
drop table t1;
|
||||||
|
SET SESSION AUTOCOMMIT = 0;
|
||||||
|
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||||
|
set binlog_format=mixed;
|
||||||
|
# Switch to connection con1
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(256))
|
||||||
|
ENGINE = InnoDB
|
||||||
|
PARTITION BY RANGE (a)
|
||||||
|
(PARTITION p0 VALUES LESS THAN (300),
|
||||||
|
PARTITION p1 VALUES LESS THAN MAXVALUE);
|
||||||
|
INSERT INTO t1 VALUES (1,2);
|
||||||
|
# 1. test for locking:
|
||||||
|
BEGIN;
|
||||||
|
UPDATE t1 SET b = 12 WHERE a = 1;
|
||||||
|
affected rows: 1
|
||||||
|
info: Rows matched: 1 Changed: 1 Warnings: 0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 12
|
||||||
|
# Switch to connection con2
|
||||||
|
UPDATE t1 SET b = 21 WHERE a = 1;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
# Switch to connection con1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 12
|
||||||
|
ROLLBACK;
|
||||||
|
# 2. test for serialized update:
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
TRUNCATE t1;
|
||||||
|
INSERT INTO t1 VALUES (1,'init');
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
UPDATE t1 SET b = CONCAT(b, '+con2') WHERE a = 1;
|
||||||
|
INSERT INTO t2 VALUES ();
|
||||||
|
END|
|
||||||
|
BEGIN;
|
||||||
|
UPDATE t1 SET b = CONCAT(b, '+con1') WHERE a = 1;
|
||||||
|
affected rows: 1
|
||||||
|
info: Rows matched: 1 Changed: 1 Warnings: 0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 init+con1
|
||||||
|
# Switch to connection con2
|
||||||
|
CALL p1;;
|
||||||
|
# Switch to connection con1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 init+con1
|
||||||
|
COMMIT;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 init+con1
|
||||||
|
# Switch to connection con2
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
1 init+con1+con2
|
||||||
|
# Switch to connection con1
|
||||||
|
# 3. test for updated key column:
|
||||||
|
TRUNCATE t1;
|
||||||
|
TRUNCATE t2;
|
||||||
|
INSERT INTO t1 VALUES (1,'init');
|
||||||
|
BEGIN;
|
||||||
|
UPDATE t1 SET a = 2, b = CONCAT(b, '+con1') WHERE a = 1;
|
||||||
|
affected rows: 1
|
||||||
|
info: Rows matched: 1 Changed: 1 Warnings: 0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
2 init+con1
|
||||||
|
# Switch to connection con2
|
||||||
|
CALL p1;;
|
||||||
|
# Switch to connection con1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
2 init+con1
|
||||||
|
COMMIT;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
2 init+con1
|
||||||
|
# Switch to connection con2
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
2 init+con1
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP TABLE t1, t2;
|
|
@ -1,4 +1,11 @@
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (a INT PRIMARY KEY)
|
||||||
|
ENGINE MYISAM
|
||||||
|
PARTITION BY HASH (a)
|
||||||
|
PARTITIONS 1;
|
||||||
|
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
||||||
|
ALTER TABLE t1 REORGANIZE PARTITION;
|
||||||
|
DROP TABLE t1;
|
||||||
create table t1 (a int)
|
create table t1 (a int)
|
||||||
partition by range (a)
|
partition by range (a)
|
||||||
subpartition by key (a)
|
subpartition by key (a)
|
||||||
|
|
|
@ -1,4 +1,16 @@
|
||||||
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;
|
||||||
|
CREATE TABLE t1
|
||||||
|
(a INT NOT NULL AUTO_INCREMENT,
|
||||||
|
b DATETIME,
|
||||||
|
PRIMARY KEY (a,b),
|
||||||
|
KEY (b))
|
||||||
|
PARTITION BY RANGE (to_days(b))
|
||||||
|
(PARTITION p0 VALUES LESS THAN (733681) COMMENT = 'LESS THAN 2008-10-01',
|
||||||
|
PARTITION p1 VALUES LESS THAN (733712) COMMENT = 'LESS THAN 2008-11-01',
|
||||||
|
PARTITION pX VALUES LESS THAN MAXVALUE);
|
||||||
|
SELECT a,b FROM t1 WHERE b >= '2008-12-01' AND b < '2009-12-00';
|
||||||
|
a b
|
||||||
|
DROP TABLE t1;
|
||||||
create table t1 ( a int not null) partition by hash(a) partitions 2;
|
create table t1 ( a int not null) partition by hash(a) partitions 2;
|
||||||
insert into t1 values (1),(2),(3);
|
insert into t1 values (1),(2),(3);
|
||||||
explain select * from t1 where a=5 and a=6;
|
explain select * from t1 where a=5 and a=6;
|
||||||
|
|
|
@ -1116,12 +1116,13 @@ create procedure `p1`()
|
||||||
begin
|
begin
|
||||||
select a, f1() from t1;
|
select a, f1() from t1;
|
||||||
end//
|
end//
|
||||||
|
SET @log_bin_trust_function_creators = @@global.log_bin_trust_function_creators;
|
||||||
SET GLOBAL log_bin_trust_function_creators = 1;
|
SET GLOBAL log_bin_trust_function_creators = 1;
|
||||||
call p1()//
|
call p1()//
|
||||||
a f1()
|
a f1()
|
||||||
1 2
|
1 2
|
||||||
2 2
|
2 2
|
||||||
SET GLOBAL log_bin_trust_function_creators = 0;
|
SET GLOBAL log_bin_trust_function_creators = @log_bin_trust_function_creators;
|
||||||
drop procedure p1//
|
drop procedure p1//
|
||||||
drop function f1//
|
drop function f1//
|
||||||
drop table t1//
|
drop table t1//
|
||||||
|
@ -1615,41 +1616,6 @@ id
|
||||||
DROP PROCEDURE proc29856;
|
DROP PROCEDURE proc29856;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET GLOBAL query_cache_size= default;
|
SET GLOBAL query_cache_size= default;
|
||||||
Bug#28249 Query Cache returns wrong result with concurrent insert/ certain lock
|
|
||||||
set GLOBAL query_cache_type=1;
|
|
||||||
set GLOBAL query_cache_limit=10000;
|
|
||||||
set GLOBAL query_cache_min_res_unit=0;
|
|
||||||
set GLOBAL query_cache_size= 100000;
|
|
||||||
flush tables;
|
|
||||||
drop table if exists t1, t2;
|
|
||||||
create table t1 (a int);
|
|
||||||
create table t2 (a int);
|
|
||||||
insert into t1 values (1),(2),(3);
|
|
||||||
Locking table T2 with a write lock.
|
|
||||||
lock table t2 write;
|
|
||||||
Select blocked by write lock.
|
|
||||||
select *, (select count(*) from t2) from t1;;
|
|
||||||
Sleeing is ok, because selecting should be done very fast.
|
|
||||||
Inserting into table T1.
|
|
||||||
insert into t1 values (4);
|
|
||||||
Unlocking the tables.
|
|
||||||
unlock tables;
|
|
||||||
Collecting result from previously blocked select.
|
|
||||||
Next select should contain 4 rows, as the insert is long finished.
|
|
||||||
select *, (select count(*) from t2) from t1;
|
|
||||||
a (select count(*) from t2)
|
|
||||||
1 0
|
|
||||||
2 0
|
|
||||||
3 0
|
|
||||||
4 0
|
|
||||||
reset query cache;
|
|
||||||
select *, (select count(*) from t2) from t1;
|
|
||||||
a (select count(*) from t2)
|
|
||||||
1 0
|
|
||||||
2 0
|
|
||||||
3 0
|
|
||||||
4 0
|
|
||||||
drop table t1,t2;
|
|
||||||
#
|
#
|
||||||
# Bug#25132 disabled query cache: Qcache_free_blocks = 1
|
# Bug#25132 disabled query cache: Qcache_free_blocks = 1
|
||||||
#
|
#
|
||||||
|
|
62
mysql-test/r/query_cache_28249.result
Normal file
62
mysql-test/r/query_cache_28249.result
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
SET @query_cache_type= @@global.query_cache_type;
|
||||||
|
SET @query_cache_limit= @@global.query_cache_limit;
|
||||||
|
SET @query_cache_min_res_unit= @@global.query_cache_min_res_unit;
|
||||||
|
SET @query_cache_size= @@global.query_cache_size;
|
||||||
|
# Bug#28249 Query Cache returns wrong result with concurrent insert/ certain lock
|
||||||
|
# Establish connections user1,user2,user3 (user=root)
|
||||||
|
# Switch to connection user1
|
||||||
|
SET GLOBAL query_cache_type=1;
|
||||||
|
SET GLOBAL query_cache_limit=10000;
|
||||||
|
SET GLOBAL query_cache_min_res_unit=0;
|
||||||
|
SET GLOBAL query_cache_size= 100000;
|
||||||
|
FLUSH TABLES;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (1),(2),(3);
|
||||||
|
# Switch to connection user2
|
||||||
|
LOCK TABLE t2 WRITE;
|
||||||
|
# Switch to connection user1
|
||||||
|
# "send" the next select, "reap" the result later.
|
||||||
|
# The select will be blocked by the write lock on the t1.
|
||||||
|
SELECT *, (SELECT COUNT(*) FROM t2) FROM t1;
|
||||||
|
# Switch to connection user3
|
||||||
|
# Poll till the select of connection user1 is blocked by the write lock on t1.
|
||||||
|
SELECT user,command,state,info FROM information_schema.processlist
|
||||||
|
WHERE state = 'Locked'
|
||||||
|
AND info = 'SELECT *, (SELECT COUNT(*) FROM t2) FROM t1';
|
||||||
|
user command state info
|
||||||
|
root Query Locked SELECT *, (SELECT COUNT(*) FROM t2) FROM t1
|
||||||
|
INSERT INTO t1 VALUES (4);
|
||||||
|
# Switch to connection user2
|
||||||
|
UNLOCK TABLES;
|
||||||
|
# Switch to connection user1
|
||||||
|
# Collecting ("reap") the result from the previously blocked select.
|
||||||
|
# The printing of the result (varies between 3 and 4 rows) set has to be suppressed.
|
||||||
|
# Switch to connection user3
|
||||||
|
# The next select enforces that effects of "concurrent_inserts" like the
|
||||||
|
# record with a = 4 is missing in result sets can no more happen.
|
||||||
|
SELECT 1 FROM t1 WHERE a = 4;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
# Switch to connection user1
|
||||||
|
# The next result set must contain 4 rows.
|
||||||
|
SELECT *, (SELECT COUNT(*) FROM t2) FROM t1;
|
||||||
|
a (SELECT COUNT(*) FROM t2)
|
||||||
|
1 0
|
||||||
|
2 0
|
||||||
|
3 0
|
||||||
|
4 0
|
||||||
|
RESET QUERY CACHE;
|
||||||
|
SELECT *, (SELECT COUNT(*) FROM t2) FROM t1;
|
||||||
|
a (SELECT COUNT(*) FROM t2)
|
||||||
|
1 0
|
||||||
|
2 0
|
||||||
|
3 0
|
||||||
|
4 0
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
# Switch to connection default + close connections user1,user2,user3
|
||||||
|
SET GLOBAL query_cache_type= @query_cache_type;
|
||||||
|
SET GLOBAL query_cache_limit= @query_cache_limit;
|
||||||
|
SET GLOBAL query_cache_min_res_unit= @query_cache_min_res_unit;
|
||||||
|
SET GLOBAL query_cache_size= @query_cache_size;
|
|
@ -86,6 +86,8 @@ SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ;
|
||||||
@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
|
@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228
|
||||||
1
|
1
|
||||||
SET @@global.read_buffer_size = 2147479553;
|
SET @@global.read_buffer_size = 2147479553;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect read_buffer_size value: '2147479553'
|
||||||
SELECT @@global.read_buffer_size;
|
SELECT @@global.read_buffer_size;
|
||||||
@@global.read_buffer_size
|
@@global.read_buffer_size
|
||||||
2147479552
|
2147479552
|
||||||
|
@ -114,6 +116,8 @@ SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ;
|
||||||
SET @@session.read_buffer_size = 65530.34.;
|
SET @@session.read_buffer_size = 65530.34.;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
||||||
SET @@session.read_buffer_size = 2147479553;
|
SET @@session.read_buffer_size = 2147479553;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect read_buffer_size value: '2147479553'
|
||||||
SELECT @@session.read_buffer_size;
|
SELECT @@session.read_buffer_size;
|
||||||
@@session.read_buffer_size
|
@@session.read_buffer_size
|
||||||
2147479552
|
2147479552
|
||||||
|
|
|
@ -88,6 +88,8 @@ SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 822
|
||||||
@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
|
@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228
|
||||||
1
|
1
|
||||||
SET @@global.read_rnd_buffer_size = 2147479553;
|
SET @@global.read_rnd_buffer_size = 2147479553;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2147479553'
|
||||||
SELECT @@global.read_rnd_buffer_size;
|
SELECT @@global.read_rnd_buffer_size;
|
||||||
@@global.read_rnd_buffer_size
|
@@global.read_rnd_buffer_size
|
||||||
2147479552
|
2147479552
|
||||||
|
@ -116,6 +118,8 @@ SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8
|
||||||
SET @@session.read_rnd_buffer_size = 65530.34.;
|
SET @@session.read_rnd_buffer_size = 65530.34.;
|
||||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
||||||
SET @@session.read_rnd_buffer_size = 2147479553;
|
SET @@session.read_rnd_buffer_size = 2147479553;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2147479553'
|
||||||
SELECT @@session.read_rnd_buffer_size;
|
SELECT @@session.read_rnd_buffer_size;
|
||||||
@@session.read_rnd_buffer_size
|
@@session.read_rnd_buffer_size
|
||||||
2147479552
|
2147479552
|
||||||
|
|
|
@ -4,44 +4,43 @@ 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;
|
||||||
'#--------------------FN_DYNVARS_037_01-------------------------#'
|
connection slave
|
||||||
SET @@global.init_slave = "SET @a = 10";
|
SET @start_max_connections= @@global.max_connections;
|
||||||
'connect (con1,localhost,root,,)'
|
SET @start_init_slave= @@global.init_slave;
|
||||||
'connection con1'
|
SET @@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1';
|
||||||
SELECT @@global.init_slave;
|
DROP TABLE IF EXISTS t1;
|
||||||
@@global.init_slave
|
CREATE TEMPORARY TABLE t1 AS SELECT @@global.init_slave AS my_column;
|
||||||
SET @a = 10
|
DESCRIBE t1;
|
||||||
'connection master'
|
Field Type Null Key Default Extra
|
||||||
'#--------------------FN_DYNVARS_037_02-------------------------#'
|
my_column longtext NO NULL
|
||||||
'check if value in slave opt file is executed'
|
DROP TABLE t1;
|
||||||
'connection slave'
|
SELECT @@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1';
|
||||||
show variables like 'init_slave';
|
@@global.init_slave = 'SET @@global.max_connections = @@global.max_connections + 1'
|
||||||
Variable_name Value
|
1
|
||||||
init_slave set global max_connections=500
|
Expect 1
|
||||||
show variables like 'max_connections';
|
SELECT @@global.max_connections= @start_max_connections;
|
||||||
Variable_name Value
|
@@global.max_connections= @start_max_connections
|
||||||
max_connections 500
|
1
|
||||||
reset master;
|
Expect 1
|
||||||
'check if value in slave opt file doesnt apply to master'
|
STOP SLAVE;
|
||||||
'connection master'
|
RESET MASTER;
|
||||||
show variables like 'init_slave';
|
RESET SLAVE;
|
||||||
Variable_name Value
|
START SLAVE;
|
||||||
init_slave SET @a = 10
|
SELECT @@global.max_connections = @start_max_connections + 1;
|
||||||
show variables like 'max_connections';
|
@@global.max_connections = @start_max_connections + 1
|
||||||
Variable_name Value
|
1
|
||||||
max_connections 151
|
Expect 1
|
||||||
'connection slave'
|
|
||||||
'try creating a temporary variable in init_slave'
|
|
||||||
SET @@global.init_slave = "SET @a=5";
|
SET @@global.init_slave = "SET @a=5";
|
||||||
stop slave;
|
STOP SLAVE;
|
||||||
reset slave;
|
RESET MASTER;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
RESET SLAVE;
|
||||||
start slave;
|
START SLAVE;
|
||||||
SHOW VARIABLES LIKE 'init_slave';
|
SHOW VARIABLES LIKE 'init_slave';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
init_slave SET @a=5
|
init_slave SET @a=5
|
||||||
SELECT @a;
|
SELECT @a;
|
||||||
@a
|
@a
|
||||||
NULL
|
NULL
|
||||||
'Bug#35365 SET statement in init_slave not execute if slave is restarted'
|
Expect NULL
|
||||||
set global max_connections= default;
|
SET @@global.max_connections= @start_max_connections;
|
||||||
|
SET @@global.init_slave= @start_init_slave;
|
||||||
|
|
|
@ -4340,6 +4340,39 @@ Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
Handler_read_rnd_next 6
|
Handler_read_rnd_next 6
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE t1 (f1 bigint(20) NOT NULL default '0',
|
||||||
|
f2 int(11) NOT NULL default '0',
|
||||||
|
f3 bigint(20) NOT NULL default '0',
|
||||||
|
f4 varchar(255) NOT NULL default '',
|
||||||
|
PRIMARY KEY (f1),
|
||||||
|
KEY key1 (f4),
|
||||||
|
KEY key2 (f2));
|
||||||
|
CREATE TABLE t2 (f1 int(11) NOT NULL default '0',
|
||||||
|
f2 enum('A1','A2','A3') NOT NULL default 'A1',
|
||||||
|
f3 int(11) NOT NULL default '0',
|
||||||
|
PRIMARY KEY (f1),
|
||||||
|
KEY key1 (f3));
|
||||||
|
CREATE TABLE t3 (f1 bigint(20) NOT NULL default '0',
|
||||||
|
f2 datetime NOT NULL default '1980-01-01 00:00:00',
|
||||||
|
PRIMARY KEY (f1));
|
||||||
|
insert into t1 values (1, 1, 1, 'abc');
|
||||||
|
insert into t1 values (2, 1, 2, 'def');
|
||||||
|
insert into t1 values (3, 1, 2, 'def');
|
||||||
|
insert into t2 values (1, 'A1', 1);
|
||||||
|
insert into t3 values (1, '1980-01-01');
|
||||||
|
SELECT a.f3, cr.f4, count(*) count
|
||||||
|
FROM t2 a
|
||||||
|
STRAIGHT_JOIN t1 cr ON cr.f2 = a.f1
|
||||||
|
LEFT JOIN
|
||||||
|
(t1 cr2
|
||||||
|
JOIN t3 ae2 ON cr2.f3 = ae2.f1
|
||||||
|
) ON a.f1 = cr2.f2 AND ae2.f2 < now() - INTERVAL 7 DAY AND
|
||||||
|
cr.f4 = cr2.f4
|
||||||
|
GROUP BY a.f3, cr.f4;
|
||||||
|
f3 f4 count
|
||||||
|
1 abc 1
|
||||||
|
1 def 2
|
||||||
|
drop table t1, t2, t3;
|
||||||
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);
|
||||||
|
@ -4358,3 +4391,29 @@ a
|
||||||
4
|
4
|
||||||
5
|
5
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE A (date_key date);
|
||||||
|
CREATE TABLE C (
|
||||||
|
pk int,
|
||||||
|
int_nokey int,
|
||||||
|
int_key int,
|
||||||
|
date_key date NOT NULL,
|
||||||
|
date_nokey date,
|
||||||
|
varchar_key varchar(1)
|
||||||
|
);
|
||||||
|
INSERT INTO C VALUES
|
||||||
|
(1,1,1,'0000-00-00',NULL,NULL),
|
||||||
|
(1,1,1,'0000-00-00',NULL,NULL);
|
||||||
|
SELECT 1 FROM C WHERE pk > ANY (SELECT 1 FROM C);
|
||||||
|
1
|
||||||
|
SELECT COUNT(DISTINCT 1) FROM C
|
||||||
|
WHERE date_key = (SELECT 1 FROM A WHERE C.date_key IS NULL) GROUP BY pk;
|
||||||
|
COUNT(DISTINCT 1)
|
||||||
|
SELECT date_nokey FROM C
|
||||||
|
WHERE int_key IN (SELECT 1 FROM A)
|
||||||
|
HAVING date_nokey = '10:41:7'
|
||||||
|
ORDER BY date_key;
|
||||||
|
date_nokey
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Incorrect date value: '10:41:7' for column 'date_nokey' at row 1
|
||||||
|
DROP TABLE A,C;
|
||||||
|
End of 5.1 tests
|
||||||
|
|
|
@ -209,4 +209,29 @@ ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table '
|
||||||
drop database db37908;
|
drop database db37908;
|
||||||
drop procedure proc37908;
|
drop procedure proc37908;
|
||||||
drop function func37908;
|
drop function func37908;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
DROP FUNCTION IF EXISTS f1;
|
||||||
|
CREATE FUNCTION f1() RETURNS INTEGER
|
||||||
|
BEGIN
|
||||||
|
DECLARE foo INTEGER;
|
||||||
|
DECLARE bar INTEGER;
|
||||||
|
SET foo=1;
|
||||||
|
SET bar=2;
|
||||||
|
RETURN foo;
|
||||||
|
END $$
|
||||||
|
CREATE PROCEDURE p1()
|
||||||
|
BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END $$
|
||||||
|
SELECT f1();
|
||||||
|
f1()
|
||||||
|
1
|
||||||
|
CALL p1();
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 9;
|
||||||
|
9
|
||||||
|
9
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP FUNCTION f1;
|
||||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||||
|
|
73
mysql-test/r/status2.result
Normal file
73
mysql-test/r/status2.result
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
#
|
||||||
|
# Bug#24289 Status Variable "Questions" gets wrong values with Stored Routines
|
||||||
|
#
|
||||||
|
FLUSH STATUS;
|
||||||
|
CREATE FUNCTION testQuestion() RETURNS INTEGER
|
||||||
|
BEGIN
|
||||||
|
DECLARE foo INTEGER;
|
||||||
|
DECLARE bar INTEGER;
|
||||||
|
SET foo=1;
|
||||||
|
SET bar=2;
|
||||||
|
RETURN foo;
|
||||||
|
END $$
|
||||||
|
CREATE PROCEDURE testQuestion2()
|
||||||
|
BEGIN
|
||||||
|
SELECT 1;
|
||||||
|
END $$
|
||||||
|
DROP TABLE IF EXISTS t1,t2;
|
||||||
|
CREATE TABLE t1 (c1 INT);
|
||||||
|
CREATE TABLE t2 (c1 INT);
|
||||||
|
CREATE EVENT ev1 ON SCHEDULE EVERY 1 SECOND
|
||||||
|
DO INSERT INTO t1 VALUES(1);
|
||||||
|
Assert Questions == 7
|
||||||
|
SHOW STATUS LIKE 'Questions';
|
||||||
|
Variable_name Value
|
||||||
|
Questions 7
|
||||||
|
SELECT testQuestion();
|
||||||
|
testQuestion()
|
||||||
|
1
|
||||||
|
Assert Questions == 9
|
||||||
|
SHOW STATUS LIKE 'Questions';
|
||||||
|
Variable_name Value
|
||||||
|
Questions 9
|
||||||
|
CALL testQuestion2();
|
||||||
|
1
|
||||||
|
1
|
||||||
|
Assert Questions == 11
|
||||||
|
SHOW STATUS LIKE 'Questions';
|
||||||
|
Variable_name Value
|
||||||
|
Questions 11
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
Assert Questions == 13
|
||||||
|
SHOW STATUS LIKE 'Questions';
|
||||||
|
Variable_name Value
|
||||||
|
Questions 13
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
Assert Questions == 14
|
||||||
|
SHOW STATUS LIKE 'Questions';
|
||||||
|
Variable_name Value
|
||||||
|
Questions 14
|
||||||
|
CREATE TRIGGER trigg1 AFTER INSERT ON t1
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
END;
|
||||||
|
$$
|
||||||
|
Assert Questions == 16
|
||||||
|
SHOW STATUS LIKE 'Questions';
|
||||||
|
Variable_name Value
|
||||||
|
Questions 16
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
Assert Questions == 18
|
||||||
|
SHOW STATUS LIKE 'Questions';
|
||||||
|
Variable_name Value
|
||||||
|
Questions 18
|
||||||
|
DROP PROCEDURE testQuestion2;
|
||||||
|
DROP TRIGGER trigg1;
|
||||||
|
DROP FUNCTION testQuestion;
|
||||||
|
DROP EVENT ev1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
End of 6.0 tests
|
|
@ -1347,6 +1347,13 @@ t1 CREATE TABLE `t1` (
|
||||||
`i` int(11) DEFAULT NULL
|
`i` int(11) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='123456789*123456789*123456789*123456789*123456789*123456789*'
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='123456789*123456789*123456789*123456789*123456789*123456789*'
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t3 (f1 INT) COMMENT 'כקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחן';
|
||||||
|
SHOW CREATE TABLE t3;
|
||||||
|
Table Create Table
|
||||||
|
t3 CREATE TABLE `t3` (
|
||||||
|
`f1` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='כקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחןכקבהחן'
|
||||||
|
DROP TABLE t3;
|
||||||
set sql_mode= 'traditional';
|
set sql_mode= 'traditional';
|
||||||
create table t1(col1 tinyint, col2 tinyint unsigned,
|
create table t1(col1 tinyint, col2 tinyint unsigned,
|
||||||
col3 smallint, col4 smallint unsigned,
|
col3 smallint, col4 smallint unsigned,
|
||||||
|
|
|
@ -194,4 +194,20 @@ DELETE FROM t1;
|
||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
a b
|
a b
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
DROP TABLE IF EXISTS t1,t2;
|
||||||
|
DROP FUNCTION IF EXISTS f1;
|
||||||
|
CREATE TEMPORARY TABLE t1 (a INT);
|
||||||
|
CREATE TEMPORARY TABLE t2 LIKE t1;
|
||||||
|
CREATE FUNCTION f1() RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
return 1;
|
||||||
|
END|
|
||||||
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT f1();
|
||||||
|
CREATE TABLE t3 SELECT * FROM t1;
|
||||||
|
INSERT INTO t1 SELECT f1();
|
||||||
|
UPDATE t1,t2 SET t1.a = t2.a;
|
||||||
|
INSERT INTO t2 SELECT f1();
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
DROP FUNCTION f1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
|
|
@ -708,6 +708,47 @@ HEX(b1) HEX(b2) i2
|
||||||
1 0 100
|
1 0 100
|
||||||
1 0 200
|
1 0 200
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE IF NOT EXISTS t1 (
|
||||||
|
f1 bit(2) NOT NULL default b'10',
|
||||||
|
f2 bit(14) NOT NULL default b'11110000111100'
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`f1` bit(2) NOT NULL DEFAULT b'10',
|
||||||
|
`f2` bit(14) NOT NULL DEFAULT b'11110000111100'
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE IF NOT EXISTS t1 (
|
||||||
|
f1 bit(2) NOT NULL default b''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
|
||||||
|
ERROR 42000: Invalid default value for 'f1'
|
||||||
|
create table t1bit7 (a1 bit(7) not null) engine=MyISAM;
|
||||||
|
create table t2bit7 (b1 bit(7)) engine=MyISAM;
|
||||||
|
insert into t1bit7 values (b'1100000');
|
||||||
|
insert into t1bit7 values (b'1100001');
|
||||||
|
insert into t1bit7 values (b'1100010');
|
||||||
|
insert into t2bit7 values (b'1100001');
|
||||||
|
insert into t2bit7 values (b'1100010');
|
||||||
|
insert into t2bit7 values (b'1100110');
|
||||||
|
select bin(a1) from t1bit7, t2bit7 where t1bit7.a1=t2bit7.b1;
|
||||||
|
bin(a1)
|
||||||
|
1100001
|
||||||
|
1100010
|
||||||
|
drop table t1bit7, t2bit7;
|
||||||
|
create table t1bit7 (a1 bit(15) not null) engine=MyISAM;
|
||||||
|
create table t2bit7 (b1 bit(15)) engine=MyISAM;
|
||||||
|
insert into t1bit7 values (b'110000011111111');
|
||||||
|
insert into t1bit7 values (b'110000111111111');
|
||||||
|
insert into t1bit7 values (b'110001011111111');
|
||||||
|
insert into t2bit7 values (b'110000111111111');
|
||||||
|
insert into t2bit7 values (b'110001011111111');
|
||||||
|
insert into t2bit7 values (b'110011011111111');
|
||||||
|
select bin(a1) from t1bit7, t2bit7 where t1bit7.a1=t2bit7.b1;
|
||||||
|
bin(a1)
|
||||||
|
110000111111111
|
||||||
|
110001011111111
|
||||||
|
drop table t1bit7, t2bit7;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
create table t1(a bit(7));
|
create table t1(a bit(7));
|
||||||
insert into t1 values(0x40);
|
insert into t1 values(0x40);
|
||||||
|
|
|
@ -65,11 +65,14 @@ CREATE TABLE t1(AFIELD INT);
|
||||||
INSERT INTO t1 VALUES(1);
|
INSERT INTO t1 VALUES(1);
|
||||||
CREATE TABLE t2(GMT VARCHAR(32));
|
CREATE TABLE t2(GMT VARCHAR(32));
|
||||||
INSERT INTO t2 VALUES('GMT-0800');
|
INSERT INTO t2 VALUES('GMT-0800');
|
||||||
SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)) FROM t1, t2 GROUP BY t1.AFIELD;
|
SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT))
|
||||||
|
FROM t1, t2 GROUP BY t1.AFIELD;
|
||||||
DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT))
|
DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT))
|
||||||
Wed, 06 March 2002 10:11:12 GMT-0800
|
Wed, 06 March 2002 10:11:12 GMT-0800
|
||||||
INSERT INTO t1 VALUES(1);
|
INSERT INTO t1 VALUES(1);
|
||||||
SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)), DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ' , t2.GMT)) FROM t1,t2 GROUP BY t1.AFIELD;
|
SELECT DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT)),
|
||||||
|
DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT))
|
||||||
|
FROM t1,t2 GROUP BY t1.AFIELD;
|
||||||
DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT)) DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT))
|
DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT)) DATE_FORMAT("2002-03-06 10:11:12", CONCAT('%a, %d %M %Y %H:%i:%s ', t2.GMT))
|
||||||
Wed, 06 March 2002 10:11:12 GMT-0800 Wed, 06 March 2002 10:11:12 GMT-0800
|
Wed, 06 March 2002 10:11:12 GMT-0800 Wed, 06 March 2002 10:11:12 GMT-0800
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
@ -155,7 +158,7 @@ str_to_date( '', a )
|
||||||
0000-00-00 00:00:00
|
0000-00-00 00:00:00
|
||||||
NULL
|
NULL
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a DATE, b int, PRIMARY KEY (a,b));
|
CREATE TABLE t1 (a DATE, b INT, PRIMARY KEY (a,b));
|
||||||
INSERT INTO t1 VALUES (DATE(NOW()), 1);
|
INSERT INTO t1 VALUES (DATE(NOW()), 1);
|
||||||
SELECT COUNT(*) FROM t1 WHERE a = NOW();
|
SELECT COUNT(*) FROM t1 WHERE a = NOW();
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
|
|
|
@ -392,4 +392,13 @@ f1 + 0e0
|
||||||
1.0000000150475e+30
|
1.0000000150475e+30
|
||||||
-1.0000000150475e+30
|
-1.0000000150475e+30
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(d double, u bigint unsigned);
|
||||||
|
insert into t1(d) values (9.22337203685479e18),
|
||||||
|
(1.84e19);
|
||||||
|
update t1 set u = d;
|
||||||
|
select u from t1;
|
||||||
|
u
|
||||||
|
9223372036854790144
|
||||||
|
18400000000000000000
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
|
|
@ -1,7 +1,15 @@
|
||||||
create table t1 (id int) engine=NDB;
|
create table t1 (id int) engine=NDB;
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Warning 1286 Unknown table engine 'NDB'
|
||||||
Warning 1266 Using storage engine MyISAM for table 't1'
|
Warning 1266 Using storage engine MyISAM for table 't1'
|
||||||
alter table t1 engine=NDB;
|
alter table t1 engine=NDB;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1266 Using storage engine MyISAM for table 't1'
|
Warning 1286 Unknown table engine 'NDB'
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
SELECT ENGINE, SUPPORT FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE='ndbcluster';
|
||||||
|
ENGINE SUPPORT
|
||||||
|
ndbcluster NO
|
||||||
|
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE
|
||||||
|
PLUGIN_NAME='ndbcluster';
|
||||||
|
PLUGIN_NAME PLUGIN_STATUS
|
||||||
|
ndbcluster DISABLED
|
||||||
|
|
|
@ -1029,4 +1029,28 @@ SELECT 1 FROM t1 ORDER BY(UPDATEXML(a, '1', '1'));
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SET @xml=
|
||||||
|
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title> Title - document with document declaration</title>
|
||||||
|
</head>
|
||||||
|
<body> Hi, Im a webpage with document a declaration </body>
|
||||||
|
</html>';
|
||||||
|
SELECT ExtractValue(@xml, 'html/head/title');
|
||||||
|
ExtractValue(@xml, 'html/head/title')
|
||||||
|
Title - document with document declaration
|
||||||
|
SELECT ExtractValue(@xml, 'html/body');
|
||||||
|
ExtractValue(@xml, 'html/body')
|
||||||
|
Hi, Im a webpage with document a declaration
|
||||||
|
SELECT ExtractValue('<xml "xxx" "yyy">CharData</xml>', '/xml');
|
||||||
|
ExtractValue('<xml "xxx" "yyy">CharData</xml>', '/xml')
|
||||||
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1525 Incorrect XML value: 'parse error at line 1 pos 11: STRING unexpected ('>' wanted)'
|
||||||
|
SELECT ExtractValue('<xml xxx "yyy">CharData</xml>', '/xml');
|
||||||
|
ExtractValue('<xml xxx "yyy">CharData</xml>', '/xml')
|
||||||
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1525 Incorrect XML value: 'parse error at line 1 pos 17: STRING unexpected ('>' wanted)'
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
|
BIN
mysql-test/std_data/bug40482-bin.000001
Normal file
BIN
mysql-test/std_data/bug40482-bin.000001
Normal file
Binary file not shown.
|
@ -33,6 +33,7 @@ master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
||||||
master-bin.000001 # Query # # drop database if exists mysqltest1
|
master-bin.000001 # Query # # drop database if exists mysqltest1
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
||||||
master-bin.000001 # Query # # use `test`; drop table tt1, t1
|
master-bin.000001 # Query # # use `test`; drop table tt1, t1
|
||||||
|
FLUSH STATUS;
|
||||||
set binlog_format=mixed;
|
set binlog_format=mixed;
|
||||||
reset master;
|
reset master;
|
||||||
create database testing_1;
|
create database testing_1;
|
||||||
|
@ -68,6 +69,7 @@ master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
||||||
master-bin.000001 # Query # # drop database if exists mysqltest1
|
master-bin.000001 # Query # # drop database if exists mysqltest1
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
||||||
master-bin.000001 # Query # # use `test`; drop table tt1, t1
|
master-bin.000001 # Query # # use `test`; drop table tt1, t1
|
||||||
|
FLUSH STATUS;
|
||||||
set binlog_format=row;
|
set binlog_format=row;
|
||||||
reset master;
|
reset master;
|
||||||
create database testing_1;
|
create database testing_1;
|
||||||
|
@ -108,6 +110,7 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
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 # # use `test`; COMMIT
|
master-bin.000001 # Query # # use `test`; COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
||||||
|
FLUSH STATUS;
|
||||||
show databases;
|
show databases;
|
||||||
Database
|
Database
|
||||||
information_schema
|
information_schema
|
||||||
|
|
|
@ -113,16 +113,17 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
flush status;
|
||||||
show status like "binlog_cache_use";
|
show status like "binlog_cache_use";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Binlog_cache_use 15
|
Binlog_cache_use 0
|
||||||
show status like "binlog_cache_disk_use";
|
show status like "binlog_cache_disk_use";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Binlog_cache_disk_use 0
|
Binlog_cache_disk_use 0
|
||||||
create table t1 (a int) engine=innodb;
|
create table t1 (a int) engine=innodb;
|
||||||
show status like "binlog_cache_use";
|
show status like "binlog_cache_use";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Binlog_cache_use 16
|
Binlog_cache_use 1
|
||||||
show status like "binlog_cache_disk_use";
|
show status like "binlog_cache_disk_use";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Binlog_cache_disk_use 1
|
Binlog_cache_disk_use 1
|
||||||
|
@ -131,7 +132,7 @@ delete from t1;
|
||||||
commit;
|
commit;
|
||||||
show status like "binlog_cache_use";
|
show status like "binlog_cache_use";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Binlog_cache_use 17
|
Binlog_cache_use 2
|
||||||
show status like "binlog_cache_disk_use";
|
show status like "binlog_cache_disk_use";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Binlog_cache_disk_use 1
|
Binlog_cache_disk_use 1
|
||||||
|
|
31
mysql-test/suite/binlog/r/binlog_innodb_row.result
Normal file
31
mysql-test/suite/binlog/r/binlog_innodb_row.result
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
CREATE TABLE t1 (i int unique) ENGINE=innodb;
|
||||||
|
reset master;
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
*** the following UPDATE query wont generate any updates for the binlog ***
|
||||||
|
update t1 set i = 3 where i < 3;
|
||||||
|
ERROR 23000: Duplicate entry '3' for key 'i'
|
||||||
|
commit;
|
||||||
|
*** Results of the test: the binlog must have only Write_rows events not any Update_rows ***
|
||||||
|
show binlog events from <binlog_start>;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
delete from t1;
|
||||||
|
reset master;
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
*** the following UPDATE query wont generate any updates for the binlog ***
|
||||||
|
insert into t1 values (3),(4),(1),(2);
|
||||||
|
ERROR 23000: Duplicate entry '1' for key 'i'
|
||||||
|
commit;
|
||||||
|
*** Results of the test: the binlog must have only one Write_rows event not two ***
|
||||||
|
show binlog events from <binlog_start>;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
drop table t1;
|
|
@ -133,10 +133,6 @@ master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
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 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Query # # use `test`; COMMIT
|
|
||||||
insert into t1 values(11);
|
insert into t1 values(11);
|
||||||
commit;
|
commit;
|
||||||
show binlog events from <binlog_start>;
|
show binlog events from <binlog_start>;
|
||||||
|
@ -148,8 +144,6 @@ master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
||||||
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 # # use `test`; COMMIT
|
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
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 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
|
@ -278,10 +272,6 @@ master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
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 # Xid # # COMMIT /* XID */
|
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t2)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Query # # use `test`; COMMIT
|
|
||||||
master-bin.000001 # Query # # use `test`; drop table t1,t2
|
master-bin.000001 # Query # # use `test`; drop table t1,t2
|
||||||
master-bin.000001 # Query # # use `test`; create table t0 (n int)
|
master-bin.000001 # Query # # use `test`; create table t0 (n int)
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
|
@ -382,7 +372,7 @@ master-bin.000001 # Query # # use `test`; DROP TABLE if exists t2
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
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 # # use `test`; COMMIT
|
master-bin.000001 # Query # # use `test`; ROLLBACK
|
||||||
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t2
|
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t2
|
||||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb
|
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
|
@ -400,7 +390,9 @@ master-bin.000001 # Query # # use `test`; DROP TABLE t2
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
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 # # use `test`; COMMIT
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
|
master-bin.000001 # Query # # use `test`; ROLLBACK
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
|
@ -408,11 +400,7 @@ master-bin.000001 # Query # # use `test`; COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||||
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 # # use `test`; COMMIT
|
master-bin.000001 # Query # # use `test`; ROLLBACK
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Query # # use `test`; COMMIT
|
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
master-bin.000001 # Query # # use `test`; BEGIN
|
||||||
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
|
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
|
||||||
master-bin.000001 # Query # # use `test`; COMMIT
|
master-bin.000001 # Query # # use `test`; COMMIT
|
||||||
|
|
|
@ -101,6 +101,7 @@ DROP TABLE t1;
|
||||||
# Actually this test has nothing to do with innodb per se, it just requires
|
# Actually this test has nothing to do with innodb per se, it just requires
|
||||||
# transactional table.
|
# transactional table.
|
||||||
#
|
#
|
||||||
|
flush status;
|
||||||
show status like "binlog_cache_use";
|
show status like "binlog_cache_use";
|
||||||
show status like "binlog_cache_disk_use";
|
show status like "binlog_cache_disk_use";
|
||||||
|
|
||||||
|
|
42
mysql-test/suite/binlog/t/binlog_innodb_row.test
Normal file
42
mysql-test/suite/binlog/t/binlog_innodb_row.test
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
#
|
||||||
|
# Tests of innodb/binlog with the row binlog format
|
||||||
|
#
|
||||||
|
source include/have_innodb.inc;
|
||||||
|
source include/have_log_bin.inc;
|
||||||
|
source include/have_binlog_format_row.inc;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #40221 Replication failure on RBR + UPDATE the primary key
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (i int unique) ENGINE=innodb;
|
||||||
|
reset master;
|
||||||
|
|
||||||
|
# part 1: update can cause the dup key
|
||||||
|
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
--echo *** the following UPDATE query wont generate any updates for the binlog ***
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
update t1 set i = 3 where i < 3;
|
||||||
|
commit;
|
||||||
|
|
||||||
|
--echo *** Results of the test: the binlog must have only Write_rows events not any Update_rows ***
|
||||||
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
|
# part 2: insert can cause the dup key
|
||||||
|
|
||||||
|
delete from t1;
|
||||||
|
reset master;
|
||||||
|
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
--echo *** the following UPDATE query wont generate any updates for the binlog ***
|
||||||
|
--error ER_DUP_ENTRY
|
||||||
|
insert into t1 values (3),(4),(1),(2);
|
||||||
|
commit;
|
||||||
|
|
||||||
|
--echo *** Results of the test: the binlog must have only one Write_rows event not two ***
|
||||||
|
source include/show_binlog_events.inc;
|
||||||
|
|
||||||
|
drop table t1;
|
|
@ -43,10 +43,10 @@ NULL information_schema COLUMN_PRIVILEGES TABLE_NAME 4 NO varchar 64 192 NULL N
|
||||||
NULL information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
NULL information_schema COLUMN_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||||
NULL information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
NULL information_schema ENGINES COMMENT 3 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||||
NULL information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
NULL information_schema ENGINES ENGINE 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||||
NULL information_schema ENGINES SAVEPOINTS 6 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
NULL information_schema ENGINES SAVEPOINTS 6 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||||
NULL information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
|
NULL information_schema ENGINES SUPPORT 2 NO varchar 8 24 NULL NULL utf8 utf8_general_ci varchar(8) select
|
||||||
NULL information_schema ENGINES TRANSACTIONS 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
NULL information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||||
NULL information_schema ENGINES XA 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
NULL information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||||
NULL information_schema EVENTS CHARACTER_SET_CLIENT 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
NULL information_schema EVENTS CHARACTER_SET_CLIENT 22 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||||
NULL information_schema EVENTS COLLATION_CONNECTION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
NULL information_schema EVENTS COLLATION_CONNECTION 23 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||||
NULL information_schema EVENTS CREATED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
|
NULL information_schema EVENTS CREATED 17 0000-00-00 00:00:00 NO datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||||
|
|
|
@ -31,27 +31,27 @@ Field Type Null Key Default Extra
|
||||||
ENGINE varchar(64) NO
|
ENGINE varchar(64) NO
|
||||||
SUPPORT varchar(8) NO
|
SUPPORT varchar(8) NO
|
||||||
COMMENT varchar(80) NO
|
COMMENT varchar(80) NO
|
||||||
TRANSACTIONS varchar(3) NO
|
TRANSACTIONS varchar(3) YES NULL
|
||||||
XA varchar(3) NO
|
XA varchar(3) YES NULL
|
||||||
SAVEPOINTS varchar(3) NO
|
SAVEPOINTS varchar(3) YES NULL
|
||||||
SHOW CREATE TABLE information_schema.ENGINES;
|
SHOW CREATE TABLE information_schema.ENGINES;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
ENGINES CREATE TEMPORARY TABLE `ENGINES` (
|
ENGINES CREATE TEMPORARY TABLE `ENGINES` (
|
||||||
`ENGINE` varchar(64) NOT NULL DEFAULT '',
|
`ENGINE` varchar(64) NOT NULL DEFAULT '',
|
||||||
`SUPPORT` varchar(8) NOT NULL DEFAULT '',
|
`SUPPORT` varchar(8) NOT NULL DEFAULT '',
|
||||||
`COMMENT` varchar(80) NOT NULL DEFAULT '',
|
`COMMENT` varchar(80) NOT NULL DEFAULT '',
|
||||||
`TRANSACTIONS` varchar(3) NOT NULL DEFAULT '',
|
`TRANSACTIONS` varchar(3) DEFAULT NULL,
|
||||||
`XA` varchar(3) NOT NULL DEFAULT '',
|
`XA` varchar(3) DEFAULT NULL,
|
||||||
`SAVEPOINTS` varchar(3) NOT NULL DEFAULT ''
|
`SAVEPOINTS` varchar(3) DEFAULT NULL
|
||||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||||
SHOW COLUMNS FROM information_schema.ENGINES;
|
SHOW COLUMNS FROM information_schema.ENGINES;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
ENGINE varchar(64) NO
|
ENGINE varchar(64) NO
|
||||||
SUPPORT varchar(8) NO
|
SUPPORT varchar(8) NO
|
||||||
COMMENT varchar(80) NO
|
COMMENT varchar(80) NO
|
||||||
TRANSACTIONS varchar(3) NO
|
TRANSACTIONS varchar(3) YES NULL
|
||||||
XA varchar(3) NO
|
XA varchar(3) YES NULL
|
||||||
SAVEPOINTS varchar(3) NO
|
SAVEPOINTS varchar(3) YES NULL
|
||||||
########################################################################
|
########################################################################
|
||||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||||
# DDL on INFORMATION_SCHEMA tables are not supported
|
# DDL on INFORMATION_SCHEMA tables are not supported
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -16,15 +16,32 @@
|
||||||
# Created:
|
# Created:
|
||||||
# 2008-08-27 mleich
|
# 2008-08-27 mleich
|
||||||
#
|
#
|
||||||
|
# Modified:
|
||||||
|
# 2008-11-17 pcrews
|
||||||
|
# added --disable / --enable_warning statements to minimize differences
|
||||||
|
# between platforms (Bug#40177 Test funcs_1.storedproc failing on Pushbuild)
|
||||||
|
#
|
||||||
|
# TODO: (After 5.1 GA)
|
||||||
|
# 1) Examine reordering statements in this file to minimize the number of
|
||||||
|
# --disable / --enable_warning statements. Unsure if performance gains
|
||||||
|
# warrant the working time
|
||||||
|
# 2) We could probably add a comparison of the # of warnings before the
|
||||||
|
# assignment of @v1_proc and @v1_func to the # of warnings after assignment
|
||||||
|
# The difference of these values should be zero
|
||||||
|
# Refer to Bug#40177 - http://bugs.mysql.com/bug.php?id=40177 for notes as well
|
||||||
|
|
||||||
eval UPDATE t1_aux SET f1 = NULL;
|
eval UPDATE t1_aux SET f1 = NULL;
|
||||||
# Enforce that all user variables have the same data type and initial value.
|
# Enforce that all user variables have the same data type and initial value.
|
||||||
SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux;
|
SELECT f1,f1,f1,f1 INTO @v1_tab,@v1_proc,@v2_proc,@v1_func FROM t1_aux;
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
eval UPDATE t1_aux SET f1 = $test_value;
|
eval UPDATE t1_aux SET f1 = $test_value;
|
||||||
|
--enable_warnings
|
||||||
SELECT f1 INTO @v1_tab FROM t1_aux;
|
SELECT f1 INTO @v1_tab FROM t1_aux;
|
||||||
|
--disable_warnings
|
||||||
eval CALL sproc_1($test_value, @v1_proc);
|
eval CALL sproc_1($test_value, @v1_proc);
|
||||||
eval SET @v1_func = func_1($test_value);
|
eval SET @v1_func = func_1($test_value);
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
if (`SELECT @v1_tab <> @v1_proc OR @v1_tab <> @v2_proc OR @v1_tab <> @v1_func`)
|
if (`SELECT @v1_tab <> @v1_proc OR @v1_tab <> @v2_proc OR @v1_tab <> @v1_func`)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# suite/funcs_1/t/is_collation_character_set_applicability.test
|
# suite/funcs_1/t/is_coll_char_set_appl.test
|
||||||
#
|
#
|
||||||
# Check the layout of information_schema.collation_character_set_applicability
|
# Check the layout of information_schema.collation_character_set_applicability
|
||||||
# and some functionality realted tests.
|
# and some functionality related tests.
|
||||||
#
|
#
|
||||||
# Author:
|
# Author:
|
||||||
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
# 2008-01-23 mleich WL#4203 Reorganize and fix the data dictionary tests of
|
|
@ -1,6 +1,6 @@
|
||||||
# Disabled by hhunger (2008-03-03) due to WL4204
|
# Disabled by hhunger (2008-03-03) due to WL4204
|
||||||
innodb_charset : Due to bug#20447
|
innodb_charset : Bug#20447 Problem with prefix keys with contractions and expansions
|
||||||
myisam_charset : Due to bug#20477
|
myisam_charset : Bug#20447 Problem with prefix keys with contractions and expansions
|
||||||
memory_charset : Due to bug#20447
|
memory_charset : Bug#20447 Problem with prefix keys with contractions and expansions
|
||||||
ndb_charset : Due to bug#20447
|
ndb_charset : Bug#20447 Problem with prefix keys with contractions and expansions
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,7 @@
|
||||||
# Do not use any TAB characters for whitespace.
|
# Do not use any TAB characters for whitespace.
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when updating a range partitioned NDB table
|
|
||||||
|
|
||||||
ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms
|
ndb_partition_error2 : Bug#40989 ndb_partition_error2 needs maintenance
|
||||||
|
|
||||||
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
|
# the below testcase have been reworked to avoid the bug, test contains comment, keep bug open
|
||||||
|
|
|
@ -6,7 +6,7 @@ create table t1 (a bit(0), primary key (a)) engine='INNODB' partition by key (a)
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
`a` bit(1) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a) */
|
/*!50100 PARTITION BY KEY (a) */
|
||||||
|
@ -18,7 +18,7 @@ partition pa2);
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
`a` bit(1) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -30,7 +30,7 @@ partition by key (a) partitions 2;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0',
|
`a` bit(64) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -58,7 +58,7 @@ partition pa4 max_rows=40 min_rows=2);
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0',
|
`a` bit(64) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -88,7 +88,7 @@ partition by key (a) partitions 4;
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
`a` bit(1) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -102,7 +102,7 @@ alter table t2 drop primary key;
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0'
|
`a` bit(1) NOT NULL DEFAULT b'0'
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
PARTITIONS 4 */
|
PARTITIONS 4 */
|
||||||
|
@ -114,7 +114,7 @@ alter table t2 add primary key (a);
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
`a` bit(1) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -133,7 +133,7 @@ partition pa4 values less than (256));
|
||||||
show create table t3;
|
show create table t3;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t3 CREATE TABLE `t3` (
|
t3 CREATE TABLE `t3` (
|
||||||
`a` bit(8) NOT NULL DEFAULT '\0',
|
`a` bit(8) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY RANGE (a)
|
/*!50100 PARTITION BY RANGE (a)
|
||||||
|
@ -416,7 +416,7 @@ partition pa3 values in (17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32));
|
||||||
show create table t4;
|
show create table t4;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t4 CREATE TABLE `t4` (
|
t4 CREATE TABLE `t4` (
|
||||||
`a` bit(8) NOT NULL DEFAULT '\0',
|
`a` bit(8) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY LIST (a)
|
/*!50100 PARTITION BY LIST (a)
|
||||||
|
|
|
@ -6,7 +6,7 @@ create table t1 (a bit(0), primary key (a)) engine='MyISAM' partition by key (a)
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
`a` bit(1) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a) */
|
/*!50100 PARTITION BY KEY (a) */
|
||||||
|
@ -18,7 +18,7 @@ partition pa2);
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
`a` bit(1) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -30,7 +30,7 @@ partition by key (a) partitions 2;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0',
|
`a` bit(64) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -58,7 +58,7 @@ partition pa4 max_rows=40 min_rows=2);
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0',
|
`a` bit(64) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -88,7 +88,7 @@ partition by key (a) partitions 4;
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
`a` bit(1) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -102,7 +102,7 @@ alter table t2 drop primary key;
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0'
|
`a` bit(1) NOT NULL DEFAULT b'0'
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
PARTITIONS 4 */
|
PARTITIONS 4 */
|
||||||
|
@ -114,7 +114,7 @@ alter table t2 add primary key (a);
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t2 CREATE TABLE `t2` (
|
t2 CREATE TABLE `t2` (
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
`a` bit(1) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY KEY (a)
|
/*!50100 PARTITION BY KEY (a)
|
||||||
|
@ -133,7 +133,7 @@ partition pa4 values less than (256));
|
||||||
show create table t3;
|
show create table t3;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t3 CREATE TABLE `t3` (
|
t3 CREATE TABLE `t3` (
|
||||||
`a` bit(8) NOT NULL DEFAULT '\0',
|
`a` bit(8) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY RANGE (a)
|
/*!50100 PARTITION BY RANGE (a)
|
||||||
|
@ -416,7 +416,7 @@ partition pa3 values in (17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32));
|
||||||
show create table t4;
|
show create table t4;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t4 CREATE TABLE `t4` (
|
t4 CREATE TABLE `t4` (
|
||||||
`a` bit(8) NOT NULL DEFAULT '\0',
|
`a` bit(8) NOT NULL DEFAULT b'0',
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
/*!50100 PARTITION BY LIST (a)
|
/*!50100 PARTITION BY LIST (a)
|
||||||
|
|
|
@ -1,126 +0,0 @@
|
||||||
SET @max_row = 20;
|
|
||||||
create table t1 (a bit(65), primary key (a)) partition by key (a);
|
|
||||||
ERROR 42000: Display width out of range for column 'a' (max = 64)
|
|
||||||
create table t1 (a bit(0), primary key (a)) partition by key (a);
|
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
|
||||||
PRIMARY KEY (`a`)
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY KEY (a) */
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a bit(0), primary key (a)) partition by key (a) (
|
|
||||||
partition pa1 DATA DIRECTORY =
|
|
||||||
'/tmp' INDEX DIRECTORY =
|
|
||||||
'/tmp',
|
|
||||||
partition pa2 DATA DIRECTORY =
|
|
||||||
'/tmp' INDEX DIRECTORY =
|
|
||||||
'/tmp');
|
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
|
||||||
PRIMARY KEY (`a`)
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='/tmp/' INDEX DIRECTORY='/tmp/'
|
|
||||||
/*!50100 PARTITION BY KEY (a)
|
|
||||||
(PARTITION pa1 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM,
|
|
||||||
PARTITION pa2 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM) */
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a bit(64), primary key (a)) partition by key (a);
|
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0',
|
|
||||||
PRIMARY KEY (`a`)
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY KEY (a) */
|
|
||||||
insert into t1 values
|
|
||||||
(b'1111111111111111111111111111111111111111111111111111111111111111'),
|
|
||||||
(b'1000000000000000000000000000000000000000000000000000000000000000'),
|
|
||||||
(b'0000000000000000000000000000000000000000000000000000000000000001'),
|
|
||||||
(b'1010101010101010101010101010101010101010101010101010101010101010'),
|
|
||||||
(b'0101010101010101010101010101010101010101010101010101010101010101');
|
|
||||||
select hex(a) from t1;
|
|
||||||
hex(a)
|
|
||||||
1
|
|
||||||
5555555555555555
|
|
||||||
8000000000000000
|
|
||||||
AAAAAAAAAAAAAAAA
|
|
||||||
FFFFFFFFFFFFFFFF
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a bit(64), primary key (a)) partition by key (a)(
|
|
||||||
partition pa1 DATA DIRECTORY =
|
|
||||||
'/tmp' INDEX DIRECTORY =
|
|
||||||
'/tmp' max_rows=20 min_rows=2,
|
|
||||||
partition pa2 DATA DIRECTORY =
|
|
||||||
'/tmp' INDEX DIRECTORY =
|
|
||||||
'/tmp' max_rows=30 min_rows=3,
|
|
||||||
partition pa3 DATA DIRECTORY =
|
|
||||||
'/tmp' INDEX DIRECTORY =
|
|
||||||
'/tmp' max_rows=30 min_rows=4,
|
|
||||||
partition pa4 DATA DIRECTORY =
|
|
||||||
'/tmp' INDEX DIRECTORY =
|
|
||||||
'/tmp' max_rows=40 min_rows=2);
|
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` bit(64) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0',
|
|
||||||
PRIMARY KEY (`a`)
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='/tmp/' INDEX DIRECTORY='/tmp/'
|
|
||||||
/*!50100 PARTITION BY KEY (a)
|
|
||||||
(PARTITION pa1 MAX_ROWS = 20 MIN_ROWS = 2 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM,
|
|
||||||
PARTITION pa2 MAX_ROWS = 30 MIN_ROWS = 3 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM,
|
|
||||||
PARTITION pa3 MAX_ROWS = 30 MIN_ROWS = 4 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM,
|
|
||||||
PARTITION pa4 MAX_ROWS = 40 MIN_ROWS = 2 DATA DIRECTORY = '/tmp' INDEX DIRECTORY = '/tmp' ENGINE = MyISAM) */
|
|
||||||
insert into t1 values
|
|
||||||
(b'1111111111111111111111111111111111111111111111111111111111111111'),
|
|
||||||
(b'1000000000000000000000000000000000000000000000000000000000000000'),
|
|
||||||
(b'0000000000000000000000000000000000000000000000000000000000000001'),
|
|
||||||
(b'1010101010101010101010101010101010101010101010101010101010101010'),
|
|
||||||
(b'0101010101010101010101010101010101010101010101010101010101010101');
|
|
||||||
select hex(a) from t1;
|
|
||||||
hex(a)
|
|
||||||
1
|
|
||||||
5555555555555555
|
|
||||||
8000000000000000
|
|
||||||
AAAAAAAAAAAAAAAA
|
|
||||||
FFFFFFFFFFFFFFFF
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a bit, primary key (a)) partition by key (a);
|
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
|
||||||
PRIMARY KEY (`a`)
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY KEY (a) */
|
|
||||||
insert into t1 values (b'0'), (b'1');
|
|
||||||
select hex(a) from t1;
|
|
||||||
hex(a)
|
|
||||||
0
|
|
||||||
1
|
|
||||||
alter table t1 drop primary key;
|
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0'
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY KEY (a) */
|
|
||||||
select hex(a) from t1;
|
|
||||||
hex(a)
|
|
||||||
0
|
|
||||||
1
|
|
||||||
alter table t1 add primary key (a);
|
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`a` bit(1) NOT NULL DEFAULT '\0',
|
|
||||||
PRIMARY KEY (`a`)
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
/*!50100 PARTITION BY KEY (a) */
|
|
||||||
select hex(a) from t1;
|
|
||||||
hex(a)
|
|
||||||
0
|
|
||||||
1
|
|
||||||
drop table t1;
|
|
|
@ -213,5 +213,10 @@ START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES (NULL, 'first row t2');
|
INSERT INTO t1 VALUES (NULL, 'first row t2');
|
||||||
SET autocommit=OFF;
|
SET autocommit=OFF;
|
||||||
ALTER TABLE t1 AUTO_INCREMENT = 10;
|
ALTER TABLE t1 AUTO_INCREMENT = 10;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
INSERT INTO t1 VALUES (NULL, 'second row t2');
|
INSERT INTO t1 VALUES (NULL, 'second row t2');
|
||||||
|
SELECT a,b FROM t1 ORDER BY a;
|
||||||
|
a b
|
||||||
|
1 first row t2
|
||||||
|
2 second row t2
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
partition_basic_ndb : Bug#19899 Crashing the server
|
partition_basic_ndb : Bug#19899 Crashing the server
|
||||||
# http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations-syntax.html
|
# http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-limitations-syntax.html
|
||||||
partition_bit_ndb : NDB does not support bit column in index
|
|
||||||
partition_sessions : needs system_3_init.inc
|
|
||||||
partition_syntax_ndb : Bug#36735 Not supported
|
partition_syntax_ndb : Bug#36735 Not supported
|
||||||
partition_value_innodb : Bug#30581 partition_value tests use disallowed CAST() function
|
|
||||||
partition_value_myisam : Bug#30581 partition_value tests use disallowed CAST() function
|
|
||||||
partition_value_ndb : Bug#30581 partition_value tests use disallowed CAST() function
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue