Merge dl145h.mysql.com:/data0/mkindahl/mysql-5.1-main
into dl145h.mysql.com:/data0/mkindahl/mysql-5.1-2team include/my_bitmap.h: Auto merged mysql-test/suite/binlog/r/binlog_multi_engine.result: Auto merged mysql-test/suite/ndb/r/ndb_binlog_multi.result: Auto merged mysql-test/suite/ndb/t/ndb_autodiscover3.test: Auto merged mysql-test/suite/ndb/t/ndb_binlog_basic.test: Auto merged mysql-test/suite/ndb/t/ndb_binlog_ddl_multi.test: Auto merged mysql-test/suite/ndb/t/ndb_binlog_discover.test: Auto merged mysql-test/suite/ndb/t/ndb_binlog_ignore_db.test: Auto merged mysql-test/suite/ndb/t/ndb_binlog_log_bin.test: Auto merged mysql-test/suite/ndb/t/ndb_binlog_multi.test: Auto merged mysql-test/suite/ndb/t/ndb_multi_row.test: Auto merged mysql-test/suite/rpl/r/rpl_row_log.result: Auto merged mysql-test/suite/rpl/r/rpl_row_log_innodb.result: Auto merged mysql-test/suite/rpl/r/rpl_stm_log.result: Auto merged mysql-test/suite/rpl/r/rpl_truncate_7ndb_2.result: Auto merged mysql-test/suite/rpl_ndb/r/rpl_ndb_dd_partitions.result: Auto merged mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_UUID.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_bank.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_basic.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_blob.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_blob2.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_circular.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_simplex.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_advance.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_basic.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_dd_partitions.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_ddl.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_delete_nowhere.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_do_db.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_do_table.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_extraCol.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_func003.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_idempotent.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_insert_ignore.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_multi.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update2.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_multi_update3.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_rep_ignore.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_row_001.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_sp003.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_sp006.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_sync.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndb_trig004.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_ndbapi_multi.test: Auto merged mysql-test/suite/rpl_ndb/t/rpl_row_basic_7ndb.test: Auto merged sql/log_event.cc: Auto merged mysql-test/suite/rpl_ndb/r/rpl_truncate_7ndb.result: Manual merge mysql-test/t/disabled.def: Manual merge of main tree into replication tree
This commit is contained in:
commit
ef9738fe92
@ -38,9 +38,9 @@
|
|||||||
*/.libs/*
|
*/.libs/*
|
||||||
*/.pure
|
*/.pure
|
||||||
*/debug/*
|
*/debug/*
|
||||||
|
*/minsizerel/*
|
||||||
*/release/*
|
*/release/*
|
||||||
*/relwithdebinfo/*
|
*/relwithdebinfo/*
|
||||||
*/minsizerel/*
|
|
||||||
*~
|
*~
|
||||||
.*.swp
|
.*.swp
|
||||||
./CMakeCache.txt
|
./CMakeCache.txt
|
||||||
@ -584,6 +584,7 @@ heap/hp_test2
|
|||||||
help
|
help
|
||||||
help.c
|
help.c
|
||||||
help.h
|
help.h
|
||||||
|
include/abi_check
|
||||||
include/check_abi
|
include/check_abi
|
||||||
include/link_sources
|
include/link_sources
|
||||||
include/my_config.h
|
include/my_config.h
|
||||||
@ -1021,8 +1022,8 @@ libmysqld/.deps/unireg.Po
|
|||||||
libmysqld/backup_dir
|
libmysqld/backup_dir
|
||||||
libmysqld/client.c
|
libmysqld/client.c
|
||||||
libmysqld/client_settings.h
|
libmysqld/client_settings.h
|
||||||
libmysqld/convert.cc
|
|
||||||
libmysqld/cmake_dummy.c
|
libmysqld/cmake_dummy.c
|
||||||
|
libmysqld/convert.cc
|
||||||
libmysqld/derror.cc
|
libmysqld/derror.cc
|
||||||
libmysqld/discover.cc
|
libmysqld/discover.cc
|
||||||
libmysqld/emb_qcache.cpp
|
libmysqld/emb_qcache.cpp
|
||||||
|
@ -26,8 +26,9 @@ export LDFLAGS="-fprofile-arcs -ftest-coverage"
|
|||||||
|
|
||||||
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
|
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
|
||||||
# code with profiling information used by gcov.
|
# code with profiling information used by gcov.
|
||||||
# the -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
# The -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
||||||
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM -DHAVE_MUTEX_THREAD_ONLY $debug_extra_flags $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov"
|
# The -DHAVE_gcov enables code to write out coverage info even when crashing.
|
||||||
|
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM -DHAVE_MUTEX_THREAD_ONLY $debug_extra_flags $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov"
|
||||||
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
|
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
|
||||||
extra_configs="$extra_configs $max_configs"
|
extra_configs="$extra_configs $max_configs"
|
||||||
c_warnings="$c_warnings $debug_extra_warnings"
|
c_warnings="$c_warnings $debug_extra_warnings"
|
||||||
|
@ -174,7 +174,7 @@ IF(EMBED_MANIFESTS)
|
|||||||
ENDIF(NOT tmp_manifest)
|
ENDIF(NOT tmp_manifest)
|
||||||
# Set the processor architecture.
|
# Set the processor architecture.
|
||||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||||
SET(PROCESSOR_ARCH "X64")
|
SET(PROCESSOR_ARCH "amd64")
|
||||||
ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
ELSE(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||||
SET(PROCESSOR_ARCH "X86")
|
SET(PROCESSOR_ARCH "X86")
|
||||||
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8 2005 Win64")
|
||||||
|
14
Makefile.am
14
Makefile.am
@ -58,7 +58,8 @@ tags:
|
|||||||
test test-force test-full test-force-full test-force-mem \
|
test test-force test-full test-force-full test-force-mem \
|
||||||
test-pl test-force-pl test-full-pl test-force-full-pl test-force-pl-mem \
|
test-pl test-force-pl test-full-pl test-force-full-pl test-force-pl-mem \
|
||||||
test-unit test-ps test-nr test-pr test-ns test-binlog-statement \
|
test-unit test-ps test-nr test-pr test-ns test-binlog-statement \
|
||||||
test-ext-funcs test-ext-rpl test-ext-partitions test-ext \
|
test-ext-funcs test-ext-rpl test-ext-partitions test-ext-jp \
|
||||||
|
test-ext-stress test-ext \
|
||||||
test-fast test-fast-cursor test-fast-view test-fast-prepare \
|
test-fast test-fast-cursor test-fast-view test-fast-prepare \
|
||||||
test-full-qa
|
test-full-qa
|
||||||
|
|
||||||
@ -144,6 +145,8 @@ test-bt:
|
|||||||
cd mysql-test ; MTR_BUILD_THREAD=auto \
|
cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
@PERL@ ./mysql-test-run.pl --comment=NIST+ps --force --suite=nist --ps-protocol ; \
|
@PERL@ ./mysql-test-run.pl --comment=NIST+ps --force --suite=nist --ps-protocol ; \
|
||||||
fi
|
fi
|
||||||
|
-cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
|
@PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress
|
||||||
|
|
||||||
# Re-enable the "rowlock" suite when bug#28685 is fixed
|
# Re-enable the "rowlock" suite when bug#28685 is fixed
|
||||||
# -cd mysql-test ; MTR_BUILD_THREAD=auto \
|
# -cd mysql-test ; MTR_BUILD_THREAD=auto \
|
||||||
@ -182,12 +185,17 @@ test-ext-jp:
|
|||||||
cd mysql-test ; \
|
cd mysql-test ; \
|
||||||
@PERL@ ./mysql-test-run.pl --force --suite=jp
|
@PERL@ ./mysql-test-run.pl --force --suite=jp
|
||||||
|
|
||||||
test-ext: test-ext-funcs test-ext-rpl test-ext-partitions test-ext-jp
|
test-ext-stress:
|
||||||
|
cd mysql-test ; \
|
||||||
|
@PERL@ ./mysql-test-run.pl --force --big-test --suite=stress
|
||||||
|
|
||||||
|
test-ext: test-ext-funcs test-ext-rpl test-ext-partitions test-ext-jp test-ext-stress
|
||||||
|
|
||||||
test-fast:
|
test-fast:
|
||||||
cd mysql-test ; \
|
cd mysql-test ; \
|
||||||
@PERL@ ./mysql-test-run.pl $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
|
@PERL@ ./mysql-test-run.pl $(subset) --force --skip-ndb --skip-innodb --skip-im --skip-rpl ; \
|
||||||
@PERL@ ./mysql-test-run.pl $(subset) --force --suite=funcs_1 --do-test=myisam
|
@PERL@ ./mysql-test-run.pl $(subset) --force --suite=funcs_1 --do-test=myisam ; \
|
||||||
|
@PERL@ ./mysql-test-run.pl $(subset) --force --suite=stress --do-test=ddl_myisam
|
||||||
|
|
||||||
test-fast-view:
|
test-fast-view:
|
||||||
$(MAKE) subset=--view-protocol test-fast
|
$(MAKE) subset=--view-protocol test-fast
|
||||||
|
@ -1089,7 +1089,12 @@ static int read_and_execute(bool interactive)
|
|||||||
something else is still in console input buffer
|
something else is still in console input buffer
|
||||||
*/
|
*/
|
||||||
} while (tmpbuf.alloced_length() <= clen);
|
} while (tmpbuf.alloced_length() <= clen);
|
||||||
line= buffer.c_ptr();
|
/*
|
||||||
|
An empty line is returned from my_cgets when there's error reading :
|
||||||
|
Ctrl-c for example
|
||||||
|
*/
|
||||||
|
if (line)
|
||||||
|
line= buffer.c_ptr();
|
||||||
#endif /* __NETWARE__ */
|
#endif /* __NETWARE__ */
|
||||||
#else
|
#else
|
||||||
if (opt_outfile)
|
if (opt_outfile)
|
||||||
|
@ -709,6 +709,18 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
opt_disable_keys=0;
|
opt_disable_keys=0;
|
||||||
|
|
||||||
|
if (strlen(argument) >= FN_REFLEN)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
This check is made because the some the file functions below
|
||||||
|
have FN_REFLEN sized stack allocated buffers and will cause
|
||||||
|
a crash even if the input destination buffer is large enough
|
||||||
|
to hold the output.
|
||||||
|
*/
|
||||||
|
die(EX_USAGE, "Input filename too long: %s", argument);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||||
@ -1201,6 +1213,20 @@ static void restore_time_zone(FILE *sql_file,
|
|||||||
(const char *) delimiter);
|
(const char *) delimiter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
|
||||||
|
{
|
||||||
|
char query_buffer[QUERY_LENGTH];
|
||||||
|
size_t query_length;
|
||||||
|
|
||||||
|
query_length= my_snprintf(query_buffer,
|
||||||
|
sizeof (query_buffer),
|
||||||
|
"SET SESSION character_set_results = '%s'",
|
||||||
|
(const char *) cs_name);
|
||||||
|
|
||||||
|
return mysql_real_query(mysql, query_buffer, query_length);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Open a new .sql file to dump the table or view into
|
Open a new .sql file to dump the table or view into
|
||||||
|
|
||||||
@ -1706,6 +1732,9 @@ static uint dump_events_for_db(char *db)
|
|||||||
if (fetch_db_collation(db_name_buff, db_cl_name, sizeof (db_cl_name)))
|
if (fetch_db_collation(db_name_buff, db_cl_name, sizeof (db_cl_name)))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
|
if (switch_character_set_results(mysql, "binary"))
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
while ((event_list_row= mysql_fetch_row(event_list_res)) != NULL)
|
while ((event_list_row= mysql_fetch_row(event_list_res)) != NULL)
|
||||||
{
|
{
|
||||||
event_name= quote_name(event_list_row[1], name_buff, 0);
|
event_name= quote_name(event_list_row[1], name_buff, 0);
|
||||||
@ -1774,6 +1803,9 @@ static uint dump_events_for_db(char *db)
|
|||||||
} /* end of list of events */
|
} /* end of list of events */
|
||||||
fprintf(sql_file, "DELIMITER ;\n");
|
fprintf(sql_file, "DELIMITER ;\n");
|
||||||
fprintf(sql_file, "/*!50106 SET TIME_ZONE= @save_time_zone */ ;\n");
|
fprintf(sql_file, "/*!50106 SET TIME_ZONE= @save_time_zone */ ;\n");
|
||||||
|
|
||||||
|
if (switch_character_set_results(mysql, default_charset))
|
||||||
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
mysql_free_result(event_list_res);
|
mysql_free_result(event_list_res);
|
||||||
|
|
||||||
@ -1853,6 +1885,9 @@ static uint dump_routines_for_db(char *db)
|
|||||||
if (fetch_db_collation(db_name_buff, db_cl_name, sizeof (db_cl_name)))
|
if (fetch_db_collation(db_name_buff, db_cl_name, sizeof (db_cl_name)))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
|
if (switch_character_set_results(mysql, "binary"))
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
/* 0, retrieve and dump functions, 1, procedures */
|
/* 0, retrieve and dump functions, 1, procedures */
|
||||||
for (i= 0; i <= 1; i++)
|
for (i= 0; i <= 1; i++)
|
||||||
{
|
{
|
||||||
@ -1990,6 +2025,9 @@ static uint dump_routines_for_db(char *db)
|
|||||||
mysql_free_result(routine_list_res);
|
mysql_free_result(routine_list_res);
|
||||||
} /* end of for i (0 .. 1) */
|
} /* end of for i (0 .. 1) */
|
||||||
|
|
||||||
|
if (switch_character_set_results(mysql, default_charset))
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
if (lock_tables)
|
if (lock_tables)
|
||||||
VOID(mysql_query_with_error_report(mysql, 0, "UNLOCK TABLES"));
|
VOID(mysql_query_with_error_report(mysql, 0, "UNLOCK TABLES"));
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
@ -2542,6 +2580,9 @@ static void dump_triggers_for_table(char *table, char *db_name)
|
|||||||
if (fetch_db_collation(db_name, db_cl_name, sizeof (db_cl_name)))
|
if (fetch_db_collation(db_name, db_cl_name, sizeof (db_cl_name)))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
|
||||||
|
if (switch_character_set_results(mysql, "binary"))
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
|
||||||
/* Dump triggers. */
|
/* Dump triggers. */
|
||||||
|
|
||||||
while ((row= mysql_fetch_row(result)))
|
while ((row= mysql_fetch_row(result)))
|
||||||
@ -2637,6 +2678,9 @@ static void dump_triggers_for_table(char *table, char *db_name)
|
|||||||
|
|
||||||
mysql_free_result(result);
|
mysql_free_result(result);
|
||||||
|
|
||||||
|
if (switch_character_set_results(mysql, default_charset))
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
make sure to set back opt_compatible mode to
|
make sure to set back opt_compatible mode to
|
||||||
original value
|
original value
|
||||||
@ -2803,17 +2847,6 @@ static void dump_table(char *table, char *db)
|
|||||||
{
|
{
|
||||||
char filename[FN_REFLEN], tmp_path[FN_REFLEN];
|
char filename[FN_REFLEN], tmp_path[FN_REFLEN];
|
||||||
|
|
||||||
if (strlen(path) >= FN_REFLEN)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
This check is made because the some the file functions below
|
|
||||||
have FN_REFLEN sized stack allocated buffers and will cause
|
|
||||||
a crash even if the input destination buffer is large enough
|
|
||||||
to hold the output.
|
|
||||||
*/
|
|
||||||
die(EX_USAGE, "Input filename or options too long: %s", path);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Convert the path to native os format
|
Convert the path to native os format
|
||||||
and resolve to the full filepath.
|
and resolve to the full filepath.
|
||||||
@ -4390,14 +4423,22 @@ static my_bool get_view_structure(char *table, char* db)
|
|||||||
result_table= quote_name(table, table_buff, 1);
|
result_table= quote_name(table, table_buff, 1);
|
||||||
opt_quoted_table= quote_name(table, table_buff2, 0);
|
opt_quoted_table= quote_name(table, table_buff2, 0);
|
||||||
|
|
||||||
|
if (switch_character_set_results(mysql, "binary"))
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
my_snprintf(query, sizeof(query), "SHOW CREATE TABLE %s", result_table);
|
my_snprintf(query, sizeof(query), "SHOW CREATE TABLE %s", result_table);
|
||||||
|
|
||||||
if (mysql_query_with_error_report(mysql, &table_res, query))
|
if (mysql_query_with_error_report(mysql, &table_res, query))
|
||||||
|
{
|
||||||
|
switch_character_set_results(mysql, default_charset);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
|
|
||||||
/* Check if this is a view */
|
/* Check if this is a view */
|
||||||
field= mysql_fetch_field_direct(table_res, 0);
|
field= mysql_fetch_field_direct(table_res, 0);
|
||||||
if (strcmp(field->name, "View") != 0)
|
if (strcmp(field->name, "View") != 0)
|
||||||
{
|
{
|
||||||
|
switch_character_set_results(mysql, default_charset);
|
||||||
verbose_msg("-- It's base table, skipped\n");
|
verbose_msg("-- It's base table, skipped\n");
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
@ -4417,10 +4458,9 @@ static my_bool get_view_structure(char *table, char* db)
|
|||||||
result_table);
|
result_table);
|
||||||
check_io(sql_file);
|
check_io(sql_file);
|
||||||
}
|
}
|
||||||
|
fprintf(sql_file, "/*!50001 DROP TABLE %s*/;\n", opt_quoted_table);
|
||||||
if (opt_drop)
|
if (opt_drop)
|
||||||
{
|
{
|
||||||
fprintf(sql_file, "/*!50001 DROP TABLE IF EXISTS %s*/;\n",
|
|
||||||
opt_quoted_table);
|
|
||||||
fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n",
|
fprintf(sql_file, "/*!50001 DROP VIEW IF EXISTS %s*/;\n",
|
||||||
opt_quoted_table);
|
opt_quoted_table);
|
||||||
check_io(sql_file);
|
check_io(sql_file);
|
||||||
@ -4540,6 +4580,9 @@ static my_bool get_view_structure(char *table, char* db)
|
|||||||
dynstr_free(&ds_view);
|
dynstr_free(&ds_view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (switch_character_set_results(mysql, default_charset))
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
|
||||||
/* If a separate .sql file was opened, close it now */
|
/* If a separate .sql file was opened, close it now */
|
||||||
if (sql_file != md_result_file)
|
if (sql_file != md_result_file)
|
||||||
{
|
{
|
||||||
|
@ -264,6 +264,7 @@ enum enum_commands {
|
|||||||
Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST,
|
Q_REPLACE_REGEX, Q_REMOVE_FILE, Q_FILE_EXIST,
|
||||||
Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP,
|
Q_WRITE_FILE, Q_COPY_FILE, Q_PERL, Q_DIE, Q_EXIT, Q_SKIP,
|
||||||
Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE, Q_DIFF_FILES,
|
Q_CHMOD_FILE, Q_APPEND_FILE, Q_CAT_FILE, Q_DIFF_FILES,
|
||||||
|
Q_SEND_QUIT,
|
||||||
|
|
||||||
Q_UNKNOWN, /* Unknown command. */
|
Q_UNKNOWN, /* Unknown command. */
|
||||||
Q_COMMENT, /* Comments, ignored. */
|
Q_COMMENT, /* Comments, ignored. */
|
||||||
@ -351,6 +352,7 @@ const char *command_names[]=
|
|||||||
"append_file",
|
"append_file",
|
||||||
"cat_file",
|
"cat_file",
|
||||||
"diff_files",
|
"diff_files",
|
||||||
|
"send_quit",
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2541,6 +2543,48 @@ void do_diff_files(struct st_command *command)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
SYNOPSIS
|
||||||
|
do_send_quit
|
||||||
|
command called command
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
Sends a simple quit command to the server for the named connection.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
void do_send_quit(struct st_command *command)
|
||||||
|
{
|
||||||
|
char *p= command->first_argument, *name;
|
||||||
|
struct st_connection *con;
|
||||||
|
|
||||||
|
DBUG_ENTER("do_send_quit");
|
||||||
|
DBUG_PRINT("enter",("name: '%s'",p));
|
||||||
|
|
||||||
|
if (!*p)
|
||||||
|
die("Missing connection name in do_send_quit");
|
||||||
|
name= p;
|
||||||
|
while (*p && !my_isspace(charset_info,*p))
|
||||||
|
p++;
|
||||||
|
|
||||||
|
if (*p)
|
||||||
|
*p++= 0;
|
||||||
|
command->last_argument= p;
|
||||||
|
|
||||||
|
/* Loop through connection pool for connection to close */
|
||||||
|
for (con= connections; con < next_con; con++)
|
||||||
|
{
|
||||||
|
DBUG_PRINT("info", ("con->name: %s", con->name));
|
||||||
|
if (!strcmp(con->name, name))
|
||||||
|
{
|
||||||
|
simple_command(&con->mysql,COM_QUIT,NullS,0,1);
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
die("connection '%s' not found in connection pool", name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
do_perl
|
do_perl
|
||||||
@ -3454,11 +3498,10 @@ void do_close_connection(struct st_command *command)
|
|||||||
my_free(con->name, MYF(0));
|
my_free(con->name, MYF(0));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
When the connection is closed set name to "closed_connection"
|
When the connection is closed set name to "-closed_connection-"
|
||||||
to make it possible to reuse the connection name.
|
to make it possible to reuse the connection name.
|
||||||
The connection slot will not be reused
|
|
||||||
*/
|
*/
|
||||||
if (!(con->name = my_strdup("closed_connection", MYF(MY_WME))))
|
if (!(con->name = my_strdup("-closed_connection-", MYF(MY_WME))))
|
||||||
die("Out of memory");
|
die("Out of memory");
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
@ -3636,6 +3679,7 @@ void do_connect(struct st_command *command)
|
|||||||
int con_port= opt_port;
|
int con_port= opt_port;
|
||||||
char *con_options;
|
char *con_options;
|
||||||
bool con_ssl= 0, con_compress= 0;
|
bool con_ssl= 0, con_compress= 0;
|
||||||
|
struct st_connection* con_slot;
|
||||||
|
|
||||||
static DYNAMIC_STRING ds_connection_name;
|
static DYNAMIC_STRING ds_connection_name;
|
||||||
static DYNAMIC_STRING ds_host;
|
static DYNAMIC_STRING ds_host;
|
||||||
@ -3717,19 +3761,24 @@ void do_connect(struct st_command *command)
|
|||||||
con_options= end;
|
con_options= end;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (next_con == connections_end)
|
|
||||||
die("Connection limit exhausted, you can have max %d connections",
|
|
||||||
(int) (sizeof(connections)/sizeof(struct st_connection)));
|
|
||||||
|
|
||||||
if (find_connection_by_name(ds_connection_name.str))
|
if (find_connection_by_name(ds_connection_name.str))
|
||||||
die("Connection %s already exists", ds_connection_name.str);
|
die("Connection %s already exists", ds_connection_name.str);
|
||||||
|
|
||||||
|
if (next_con != connections_end)
|
||||||
|
con_slot= next_con;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!(con_slot= find_connection_by_name("-closed_connection-")))
|
||||||
|
die("Connection limit exhausted, you can have max %d connections",
|
||||||
|
(int) (sizeof(connections)/sizeof(struct st_connection)));
|
||||||
|
}
|
||||||
|
|
||||||
if (!mysql_init(&next_con->mysql))
|
if (!mysql_init(&con_slot->mysql))
|
||||||
die("Failed on mysql_init()");
|
die("Failed on mysql_init()");
|
||||||
if (opt_compress || con_compress)
|
if (opt_compress || con_compress)
|
||||||
mysql_options(&next_con->mysql, MYSQL_OPT_COMPRESS, NullS);
|
mysql_options(&con_slot->mysql, MYSQL_OPT_COMPRESS, NullS);
|
||||||
mysql_options(&next_con->mysql, MYSQL_OPT_LOCAL_INFILE, 0);
|
mysql_options(&con_slot->mysql, MYSQL_OPT_LOCAL_INFILE, 0);
|
||||||
mysql_options(&next_con->mysql, MYSQL_SET_CHARSET_NAME,
|
mysql_options(&con_slot->mysql, MYSQL_SET_CHARSET_NAME,
|
||||||
charset_info->csname);
|
charset_info->csname);
|
||||||
if (opt_charsets_dir)
|
if (opt_charsets_dir)
|
||||||
mysql_options(&cur_con->mysql, MYSQL_SET_CHARSET_DIR,
|
mysql_options(&cur_con->mysql, MYSQL_SET_CHARSET_DIR,
|
||||||
@ -3738,12 +3787,12 @@ void do_connect(struct st_command *command)
|
|||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
if (opt_use_ssl || con_ssl)
|
if (opt_use_ssl || con_ssl)
|
||||||
{
|
{
|
||||||
mysql_ssl_set(&next_con->mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
|
mysql_ssl_set(&con_slot->mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
|
||||||
opt_ssl_capath, opt_ssl_cipher);
|
opt_ssl_capath, opt_ssl_cipher);
|
||||||
#if MYSQL_VERSION_ID >= 50000
|
#if MYSQL_VERSION_ID >= 50000
|
||||||
/* Turn on ssl_verify_server_cert only if host is "localhost" */
|
/* Turn on ssl_verify_server_cert only if host is "localhost" */
|
||||||
opt_ssl_verify_server_cert= !strcmp(ds_host.str, "localhost");
|
opt_ssl_verify_server_cert= !strcmp(ds_host.str, "localhost");
|
||||||
mysql_options(&next_con->mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
mysql_options(&con_slot->mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||||
&opt_ssl_verify_server_cert);
|
&opt_ssl_verify_server_cert);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -3757,16 +3806,19 @@ void do_connect(struct st_command *command)
|
|||||||
if (ds_database.length && !strcmp(ds_database.str,"*NO-ONE*"))
|
if (ds_database.length && !strcmp(ds_database.str,"*NO-ONE*"))
|
||||||
dynstr_set(&ds_database, "");
|
dynstr_set(&ds_database, "");
|
||||||
|
|
||||||
if (connect_n_handle_errors(command, &next_con->mysql,
|
if (connect_n_handle_errors(command, &con_slot->mysql,
|
||||||
ds_host.str,ds_user.str,
|
ds_host.str,ds_user.str,
|
||||||
ds_password.str, ds_database.str,
|
ds_password.str, ds_database.str,
|
||||||
con_port, ds_sock.str))
|
con_port, ds_sock.str))
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("Inserting connection %s in connection pool",
|
DBUG_PRINT("info", ("Inserting connection %s in connection pool",
|
||||||
ds_connection_name.str));
|
ds_connection_name.str));
|
||||||
if (!(next_con->name= my_strdup(ds_connection_name.str, MYF(MY_WME))))
|
if (!(con_slot->name= my_strdup(ds_connection_name.str, MYF(MY_WME))))
|
||||||
die("Out of memory");
|
die("Out of memory");
|
||||||
cur_con= next_con++;
|
cur_con= con_slot;
|
||||||
|
|
||||||
|
if (con_slot == next_con)
|
||||||
|
next_con++; /* if we used the next_con slot, advance the pointer */
|
||||||
}
|
}
|
||||||
|
|
||||||
dynstr_free(&ds_connection_name);
|
dynstr_free(&ds_connection_name);
|
||||||
@ -6335,6 +6387,7 @@ int main(int argc, char **argv)
|
|||||||
case Q_WRITE_FILE: do_write_file(command); break;
|
case Q_WRITE_FILE: do_write_file(command); break;
|
||||||
case Q_APPEND_FILE: do_append_file(command); break;
|
case Q_APPEND_FILE: do_append_file(command); break;
|
||||||
case Q_DIFF_FILES: do_diff_files(command); break;
|
case Q_DIFF_FILES: do_diff_files(command); break;
|
||||||
|
case Q_SEND_QUIT: do_send_quit(command); break;
|
||||||
case Q_CAT_FILE: do_cat_file(command); break;
|
case Q_CAT_FILE: do_cat_file(command); break;
|
||||||
case Q_COPY_FILE: do_copy_file(command); break;
|
case Q_COPY_FILE: do_copy_file(command); break;
|
||||||
case Q_CHMOD_FILE: do_chmod_file(command); break;
|
case Q_CHMOD_FILE: do_chmod_file(command); break;
|
||||||
|
16
configure.in
16
configure.in
@ -71,14 +71,22 @@ AC_SUBST(AVAILABLE_LANGUAGES)
|
|||||||
|
|
||||||
|
|
||||||
# Canonicalize the configuration name.
|
# Canonicalize the configuration name.
|
||||||
SYSTEM_TYPE="$host_vendor-$host_os"
|
|
||||||
MACHINE_TYPE="$host_cpu"
|
# Check whether --with-system-type or --without-system-type was given.
|
||||||
|
AC_ARG_WITH(system-type,
|
||||||
|
[ --with-system-type Set the system type, like "sun-solaris10"],
|
||||||
|
[SYSTEM_TYPE="$withval"],
|
||||||
|
[SYSTEM_TYPE="$host_vendor-$host_os"])
|
||||||
|
AC_ARG_WITH(machine-type,
|
||||||
|
[ --with-machine-type Set the machine type, like "powerpc"],
|
||||||
|
[MACHINE_TYPE="$withval"],
|
||||||
|
[MACHINE_TYPE="$host_cpu"])
|
||||||
AC_SUBST(SYSTEM_TYPE)
|
AC_SUBST(SYSTEM_TYPE)
|
||||||
AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"],
|
AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"],
|
||||||
[Name of system, eg solaris])
|
[Name of system, eg sun-solaris])
|
||||||
AC_SUBST(MACHINE_TYPE)
|
AC_SUBST(MACHINE_TYPE)
|
||||||
AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"],
|
AC_DEFINE_UNQUOTED([MACHINE_TYPE], ["$MACHINE_TYPE"],
|
||||||
[Machine type name, eg sun10])
|
[Machine type name, eg sparc])
|
||||||
|
|
||||||
# Detect intel x86 like processor
|
# Detect intel x86 like processor
|
||||||
BASE_MACHINE_TYPE=$MACHINE_TYPE
|
BASE_MACHINE_TYPE=$MACHINE_TYPE
|
||||||
|
@ -277,6 +277,8 @@ int SSL_session_reused(SSL*);
|
|||||||
int SSL_set_rfd(SSL*, int);
|
int SSL_set_rfd(SSL*, int);
|
||||||
int SSL_set_wfd(SSL*, int);
|
int SSL_set_wfd(SSL*, int);
|
||||||
void SSL_set_shutdown(SSL*, int);
|
void SSL_set_shutdown(SSL*, int);
|
||||||
|
void SSL_set_quiet_shutdown(SSL *ssl,int mode);
|
||||||
|
int SSL_get_quiet_shutdown(SSL *ssl);
|
||||||
|
|
||||||
int SSL_want_read(SSL*);
|
int SSL_want_read(SSL*);
|
||||||
int SSL_want_write(SSL*);
|
int SSL_want_write(SSL*);
|
||||||
|
@ -584,6 +584,7 @@ class SSL {
|
|||||||
Socket socket_; // socket wrapper
|
Socket socket_; // socket wrapper
|
||||||
Buffers buffers_; // buffered handshakes and data
|
Buffers buffers_; // buffered handshakes and data
|
||||||
Log log_; // logger
|
Log log_; // logger
|
||||||
|
bool quietShutdown_; // shutdown without handshakes
|
||||||
|
|
||||||
// optimization variables
|
// optimization variables
|
||||||
bool has_data_; // buffered data ready?
|
bool has_data_; // buffered data ready?
|
||||||
@ -610,6 +611,7 @@ public:
|
|||||||
Buffers& useBuffers();
|
Buffers& useBuffers();
|
||||||
|
|
||||||
bool HasData() const;
|
bool HasData() const;
|
||||||
|
bool GetQuietShutdown() const;
|
||||||
|
|
||||||
// sets
|
// sets
|
||||||
void set_pending(Cipher suite);
|
void set_pending(Cipher suite);
|
||||||
@ -621,6 +623,7 @@ public:
|
|||||||
void SetError(YasslError);
|
void SetError(YasslError);
|
||||||
int SetCompression();
|
int SetCompression();
|
||||||
void UnSetCompression();
|
void UnSetCompression();
|
||||||
|
void SetQuietShutdown(bool mode);
|
||||||
|
|
||||||
// helpers
|
// helpers
|
||||||
bool isTLS() const;
|
bool isTLS() const;
|
||||||
|
@ -411,8 +411,10 @@ int SSL_clear(SSL* ssl)
|
|||||||
|
|
||||||
int SSL_shutdown(SSL* ssl)
|
int SSL_shutdown(SSL* ssl)
|
||||||
{
|
{
|
||||||
Alert alert(warning, close_notify);
|
if (!ssl->GetQuietShutdown()) {
|
||||||
sendAlert(*ssl, alert);
|
Alert alert(warning, close_notify);
|
||||||
|
sendAlert(*ssl, alert);
|
||||||
|
}
|
||||||
ssl->useLog().ShowTCP(ssl->getSocket().get_fd(), true);
|
ssl->useLog().ShowTCP(ssl->getSocket().get_fd(), true);
|
||||||
|
|
||||||
GetErrors().Remove();
|
GetErrors().Remove();
|
||||||
@ -421,6 +423,18 @@ int SSL_shutdown(SSL* ssl)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SSL_set_quiet_shutdown(SSL *ssl,int mode)
|
||||||
|
{
|
||||||
|
ssl->SetQuietShutdown(mode != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int SSL_get_quiet_shutdown(SSL *ssl)
|
||||||
|
{
|
||||||
|
return ssl->GetQuietShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* on by default but allow user to turn off */
|
/* on by default but allow user to turn off */
|
||||||
long SSL_CTX_set_session_cache_mode(SSL_CTX* ctx, long mode)
|
long SSL_CTX_set_session_cache_mode(SSL_CTX* ctx, long mode)
|
||||||
{
|
{
|
||||||
|
@ -291,7 +291,7 @@ const ClientKeyFactory& sslFactory::getClientKey() const
|
|||||||
SSL::SSL(SSL_CTX* ctx)
|
SSL::SSL(SSL_CTX* ctx)
|
||||||
: secure_(ctx->getMethod()->getVersion(), crypto_.use_random(),
|
: secure_(ctx->getMethod()->getVersion(), crypto_.use_random(),
|
||||||
ctx->getMethod()->getSide(), ctx->GetCiphers(), ctx,
|
ctx->getMethod()->getSide(), ctx->GetCiphers(), ctx,
|
||||||
ctx->GetDH_Parms().set_), has_data_(false)
|
ctx->GetDH_Parms().set_), quietShutdown_(false), has_data_(false)
|
||||||
{
|
{
|
||||||
if (int err = crypto_.get_random().GetError()) {
|
if (int err = crypto_.get_random().GetError()) {
|
||||||
SetError(YasslError(err));
|
SetError(YasslError(err));
|
||||||
@ -773,6 +773,12 @@ void SSL::SetError(YasslError ye)
|
|||||||
// TODO: add string here
|
// TODO: add string here
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set the quiet shutdown mode (close_nofiy not sent or received on shutdown)
|
||||||
|
void SSL::SetQuietShutdown(bool mode)
|
||||||
|
{
|
||||||
|
quietShutdown_ = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Buffers& SSL::useBuffers()
|
Buffers& SSL::useBuffers()
|
||||||
{
|
{
|
||||||
@ -1330,6 +1336,12 @@ YasslError SSL::GetError() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SSL::GetQuietShutdown() const
|
||||||
|
{
|
||||||
|
return quietShutdown_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SSL::GetMultiProtocol() const
|
bool SSL::GetMultiProtocol() const
|
||||||
{
|
{
|
||||||
return secure_.GetContext()->getMethod()->multipleProtocol();
|
return secure_.GetContext()->getMethod()->multipleProtocol();
|
||||||
|
@ -33,7 +33,7 @@ noinst_HEADERS = config-win.h config-netware.h \
|
|||||||
mysys_err.h my_base.h help_start.h help_end.h \
|
mysys_err.h my_base.h help_start.h help_end.h \
|
||||||
my_nosys.h my_alarm.h queues.h rijndael.h sha1.h \
|
my_nosys.h my_alarm.h queues.h rijndael.h sha1.h \
|
||||||
my_aes.h my_tree.h my_trie.h hash.h thr_alarm.h \
|
my_aes.h my_tree.h my_trie.h hash.h thr_alarm.h \
|
||||||
thr_lock.h t_ctype.h violite.h md5.h base64.h \
|
thr_lock.h t_ctype.h violite.h my_md5.h base64.h \
|
||||||
mysql_version.h.in my_handler.h my_time.h \
|
mysql_version.h.in my_handler.h my_time.h \
|
||||||
my_vle.h my_user.h my_atomic.h atomic/nolock.h \
|
my_vle.h my_user.h my_atomic.h atomic/nolock.h \
|
||||||
atomic/rwlock.h atomic/x86-gcc.h atomic/x86-msvc.h \
|
atomic/rwlock.h atomic/x86-gcc.h atomic/x86-msvc.h \
|
||||||
|
@ -246,17 +246,17 @@ extern size_t my_snprintf(char *to, size_t n, const char *fmt, ...)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
LEX_STRING -- a pair of a C-string and its length.
|
LEX_STRING -- a pair of a C-string and its length.
|
||||||
|
|
||||||
NOTE: this exactly form of declaration is required for some C-compilers
|
|
||||||
(for one, Sun C 5.7 2005/01/07). Unfortunately with such declaration
|
|
||||||
LEX_STRING can not be forward declared.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef struct
|
#ifndef _my_plugin_h
|
||||||
|
/* This definition must match the one given in mysql/plugin.h */
|
||||||
|
struct st_mysql_lex_string
|
||||||
{
|
{
|
||||||
char *str;
|
char *str;
|
||||||
size_t length;
|
size_t length;
|
||||||
} LEX_STRING;
|
};
|
||||||
|
#endif
|
||||||
|
typedef struct st_mysql_lex_string LEX_STRING;
|
||||||
|
|
||||||
#define STRING_WITH_LEN(X) (X), ((size_t) (sizeof(X) - 1))
|
#define STRING_WITH_LEN(X) (X), ((size_t) (sizeof(X) - 1))
|
||||||
#define USTRING_WITH_LEN(X) ((uchar*) X), ((size_t) (sizeof(X) - 1))
|
#define USTRING_WITH_LEN(X) ((uchar*) X), ((size_t) (sizeof(X) - 1))
|
||||||
|
@ -180,7 +180,12 @@ enum ha_extra_function {
|
|||||||
These flags are reset by the handler::extra(HA_EXTRA_RESET) call.
|
These flags are reset by the handler::extra(HA_EXTRA_RESET) call.
|
||||||
*/
|
*/
|
||||||
HA_EXTRA_DELETE_CANNOT_BATCH,
|
HA_EXTRA_DELETE_CANNOT_BATCH,
|
||||||
HA_EXTRA_UPDATE_CANNOT_BATCH
|
HA_EXTRA_UPDATE_CANNOT_BATCH,
|
||||||
|
/*
|
||||||
|
Inform handler that an "INSERT...ON DUPLICATE KEY UPDATE" will be
|
||||||
|
executed. This condition is unset by HA_EXTRA_NO_IGNORE_DUP_KEY.
|
||||||
|
*/
|
||||||
|
HA_EXTRA_INSERT_WITH_UPDATE
|
||||||
};
|
};
|
||||||
|
|
||||||
/* The following is parameter to ha_panic() */
|
/* The following is parameter to ha_panic() */
|
||||||
@ -294,6 +299,7 @@ enum ha_base_keytype {
|
|||||||
#define HA_PACK_RECORD 2 /* Request packed record format */
|
#define HA_PACK_RECORD 2 /* Request packed record format */
|
||||||
#define HA_CREATE_TMP_TABLE 4
|
#define HA_CREATE_TMP_TABLE 4
|
||||||
#define HA_CREATE_CHECKSUM 8
|
#define HA_CREATE_CHECKSUM 8
|
||||||
|
#define HA_CREATE_KEEP_FILES 16 /* don't overwrite .MYD and MYI */
|
||||||
#define HA_CREATE_DELAY_KEY_WRITE 64
|
#define HA_CREATE_DELAY_KEY_WRITE 64
|
||||||
#define HA_CREATE_RELIES_ON_SQL_LAYER 128
|
#define HA_CREATE_RELIES_ON_SQL_LAYER 128
|
||||||
|
|
||||||
|
@ -104,6 +104,17 @@ extern void bitmap_lock_invert(MY_BITMAP *map);
|
|||||||
&= ~ (1 << ((BIT) & 7)))
|
&= ~ (1 << ((BIT) & 7)))
|
||||||
#define _bitmap_is_set(MAP, BIT) (uint) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \
|
#define _bitmap_is_set(MAP, BIT) (uint) (((uchar*)(MAP)->bitmap)[(BIT) / 8] \
|
||||||
& (1 << ((BIT) & 7)))
|
& (1 << ((BIT) & 7)))
|
||||||
|
/*
|
||||||
|
WARNING!
|
||||||
|
|
||||||
|
The below symbols are inline functions in DEBUG builds and macros in
|
||||||
|
non-DEBUG builds. The latter evaluate their 'bit' argument twice.
|
||||||
|
|
||||||
|
NEVER use an increment/decrement operator with the 'bit' argument.
|
||||||
|
It would work with DEBUG builds, but fails later in production builds!
|
||||||
|
|
||||||
|
FORBIDDEN: bitmap_set_bit($my_bitmap, (field++)->field_index);
|
||||||
|
*/
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
static inline void
|
static inline void
|
||||||
bitmap_set_bit(MY_BITMAP *map,uint bit)
|
bitmap_set_bit(MY_BITMAP *map,uint bit)
|
||||||
|
@ -23,6 +23,17 @@
|
|||||||
#define HAVE_EXTERNAL_CLIENT
|
#define HAVE_EXTERNAL_CLIENT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
InnoDB depends on some MySQL internals which other plugins should not
|
||||||
|
need. This is because of InnoDB's foreign key support, "safe" binlog
|
||||||
|
truncation, and other similar legacy features.
|
||||||
|
|
||||||
|
We define accessors for these internals unconditionally, but do not
|
||||||
|
expose them in mysql/plugin.h. They are declared in ha_innodb.h for
|
||||||
|
InnoDB's use.
|
||||||
|
*/
|
||||||
|
#define INNODB_COMPATIBILITY_HOOKS
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
/* We use a Unix API, so pretend it's not Windows */
|
/* We use a Unix API, so pretend it's not Windows */
|
||||||
#undef WIN
|
#undef WIN
|
||||||
@ -968,7 +979,12 @@ typedef unsigned long uint32;
|
|||||||
typedef unsigned long ulong; /* Short for unsigned long */
|
typedef unsigned long ulong; /* Short for unsigned long */
|
||||||
#endif
|
#endif
|
||||||
#ifndef longlong_defined
|
#ifndef longlong_defined
|
||||||
#if defined(HAVE_LONG_LONG) && SIZEOF_LONG != 8
|
/*
|
||||||
|
Using [unsigned] long long is preferable as [u]longlong because we use
|
||||||
|
[unsigned] long long unconditionally in many places,
|
||||||
|
for example in constants with [U]LL suffix.
|
||||||
|
*/
|
||||||
|
#if defined(HAVE_LONG_LONG) && SIZEOF_LONG_LONG == 8
|
||||||
typedef unsigned long long int ulonglong; /* ulong or unsigned long long */
|
typedef unsigned long long int ulonglong; /* ulong or unsigned long long */
|
||||||
typedef long long int longlong;
|
typedef long long int longlong;
|
||||||
#else
|
#else
|
||||||
|
@ -24,6 +24,32 @@ class Item;
|
|||||||
#define MYSQL_THD void*
|
#define MYSQL_THD void*
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _m_string_h
|
||||||
|
/* This definition must match the one given in m_string.h */
|
||||||
|
struct st_mysql_lex_string
|
||||||
|
{
|
||||||
|
char *str;
|
||||||
|
unsigned int length;
|
||||||
|
};
|
||||||
|
#endif /* _m_string_h */
|
||||||
|
typedef struct st_mysql_lex_string MYSQL_LEX_STRING;
|
||||||
|
|
||||||
|
#define MYSQL_XIDDATASIZE 128
|
||||||
|
/**
|
||||||
|
struct st_mysql_xid is binary compatible with the XID structure as
|
||||||
|
in the X/Open CAE Specification, Distributed Transaction Processing:
|
||||||
|
The XA Specification, X/Open Company Ltd., 1991.
|
||||||
|
http://www.opengroup.org/bookstore/catalog/c193.htm
|
||||||
|
|
||||||
|
@see XID in sql/handler.h
|
||||||
|
*/
|
||||||
|
struct st_mysql_xid {
|
||||||
|
long formatID;
|
||||||
|
long gtrid_length;
|
||||||
|
long bqual_length;
|
||||||
|
char data[MYSQL_XIDDATASIZE]; /* Not \0-terminated */
|
||||||
|
};
|
||||||
|
typedef struct st_mysql_xid MYSQL_XID;
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
Plugin API. Common for all plugin types.
|
Plugin API. Common for all plugin types.
|
||||||
@ -655,7 +681,105 @@ void **thd_ha_data(const MYSQL_THD thd, const struct handlerton *hton);
|
|||||||
int thd_tx_isolation(const MYSQL_THD thd);
|
int thd_tx_isolation(const MYSQL_THD thd);
|
||||||
char *thd_security_context(MYSQL_THD thd, char *buffer, unsigned int length,
|
char *thd_security_context(MYSQL_THD thd, char *buffer, unsigned int length,
|
||||||
unsigned int max_query_len);
|
unsigned int max_query_len);
|
||||||
|
/* Increments the row counter, see THD::row_count */
|
||||||
|
void thd_inc_row_count(MYSQL_THD thd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a temporary file.
|
||||||
|
|
||||||
|
@details
|
||||||
|
The temporary file is created in a location specified by the mysql
|
||||||
|
server configuration (--tmpdir option). The caller does not need to
|
||||||
|
delete the file, it will be deleted automatically.
|
||||||
|
|
||||||
|
@param prefix prefix for temporary file name
|
||||||
|
@retval -1 error
|
||||||
|
@retval >= 0 a file handle that can be passed to dup or my_close
|
||||||
|
*/
|
||||||
|
int mysql_tmpfile(const char *prefix);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Check the killed state of a connection
|
||||||
|
|
||||||
|
@details
|
||||||
|
In MySQL support for the KILL statement is cooperative. The KILL
|
||||||
|
statement only sets a "killed" flag. This function returns the value
|
||||||
|
of that flag. A thread should check it often, especially inside
|
||||||
|
time-consuming loops, and gracefully abort the operation if it is
|
||||||
|
non-zero.
|
||||||
|
|
||||||
|
@param thd user thread connection handle
|
||||||
|
@retval 0 the connection is active
|
||||||
|
@retval 1 the connection has been killed
|
||||||
|
*/
|
||||||
|
int thd_killed(const MYSQL_THD thd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Allocate memory in the connection's local memory pool
|
||||||
|
|
||||||
|
@details
|
||||||
|
When properly used in place of @c my_malloc(), this can significantly
|
||||||
|
improve concurrency. Don't use this or related functions to allocate
|
||||||
|
large chunks of memory. Use for temporary storage only. The memory
|
||||||
|
will be freed automatically at the end of the statement; no explicit
|
||||||
|
code is required to prevent memory leaks.
|
||||||
|
|
||||||
|
@see alloc_root()
|
||||||
|
*/
|
||||||
|
void *thd_alloc(MYSQL_THD thd, unsigned int size);
|
||||||
|
/**
|
||||||
|
@see thd_alloc()
|
||||||
|
*/
|
||||||
|
void *thd_calloc(MYSQL_THD thd, unsigned int size);
|
||||||
|
/**
|
||||||
|
@see thd_alloc()
|
||||||
|
*/
|
||||||
|
char *thd_strdup(MYSQL_THD thd, const char *str);
|
||||||
|
/**
|
||||||
|
@see thd_alloc()
|
||||||
|
*/
|
||||||
|
char *thd_strmake(MYSQL_THD thd, const char *str, unsigned int size);
|
||||||
|
/**
|
||||||
|
@see thd_alloc()
|
||||||
|
*/
|
||||||
|
void *thd_memdup(MYSQL_THD thd, const void* str, unsigned int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a LEX_STRING in this connection's local memory pool
|
||||||
|
|
||||||
|
@param thd user thread connection handle
|
||||||
|
@param lex_str pointer to LEX_STRING object to be initialized
|
||||||
|
@param str initializer to be copied into lex_str
|
||||||
|
@param length length of str, in bytes
|
||||||
|
@param allocate_lex_string flag: if TRUE, allocate new LEX_STRING object,
|
||||||
|
instead of using lex_str value
|
||||||
|
@return NULL on failure, or pointer to the LEX_STRING object
|
||||||
|
|
||||||
|
@see thd_alloc()
|
||||||
|
*/
|
||||||
|
MYSQL_LEX_STRING *thd_make_lex_string(MYSQL_THD thd, MYSQL_LEX_STRING *lex_str,
|
||||||
|
const char *str, unsigned int size,
|
||||||
|
int allocate_lex_string);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the XID for this connection's transaction
|
||||||
|
|
||||||
|
@param thd user thread connection handle
|
||||||
|
@param xid location where identifier is stored
|
||||||
|
*/
|
||||||
|
void thd_get_xid(const MYSQL_THD thd, MYSQL_XID *xid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Invalidate the query cache for a given table.
|
||||||
|
|
||||||
|
@param thd user thread connection handle
|
||||||
|
@param key databasename\0tablename\0
|
||||||
|
@param key_length length of key in bytes, including the NUL bytes
|
||||||
|
@param using_trx flag: TRUE if using transactions, FALSE otherwise
|
||||||
|
*/
|
||||||
|
void mysql_query_cache_invalidate4(MYSQL_THD thd,
|
||||||
|
const char *key, unsigned int key_length,
|
||||||
|
int using_trx);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -168,8 +168,23 @@ int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Free all memory and resources used by the client library
|
||||||
|
|
||||||
|
NOTES
|
||||||
|
When calling this there should not be any other threads using
|
||||||
|
the library.
|
||||||
|
|
||||||
|
To make things simpler when used with windows dll's (which calls this
|
||||||
|
function automaticly), it's safe to call this function multiple times.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
void STDCALL mysql_server_end()
|
void STDCALL mysql_server_end()
|
||||||
{
|
{
|
||||||
|
if (!mysql_client_init)
|
||||||
|
return;
|
||||||
|
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
end_embedded_server();
|
end_embedded_server();
|
||||||
#endif
|
#endif
|
||||||
@ -4924,7 +4939,7 @@ static my_bool reset_stmt_handle(MYSQL_STMT *stmt, uint flags)
|
|||||||
Reset stored result set if so was requested or it's a part
|
Reset stored result set if so was requested or it's a part
|
||||||
of cursor fetch.
|
of cursor fetch.
|
||||||
*/
|
*/
|
||||||
if (result->data && (flags & RESET_STORE_RESULT))
|
if (flags & RESET_STORE_RESULT)
|
||||||
{
|
{
|
||||||
/* Result buffered */
|
/* Result buffered */
|
||||||
free_root(&result->alloc, MYF(MY_KEEP_PREALLOC));
|
free_root(&result->alloc, MYF(MY_KEEP_PREALLOC));
|
||||||
|
@ -26,7 +26,7 @@ EXTRA_SCRIPTS = mysql-test-run-shell.sh install_test_db.sh \
|
|||||||
valgrind.supp $(PRESCRIPTS)
|
valgrind.supp $(PRESCRIPTS)
|
||||||
EXTRA_DIST = $(EXTRA_SCRIPTS) suite
|
EXTRA_DIST = $(EXTRA_SCRIPTS) suite
|
||||||
GENSCRIPTS = mysql-test-run-shell install_test_db mtr mysql-test-run
|
GENSCRIPTS = mysql-test-run-shell install_test_db mtr mysql-test-run
|
||||||
PRESCRIPTS = mysql-test-run.pl
|
PRESCRIPTS = mysql-test-run.pl mysql-stress-test.pl
|
||||||
test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS)
|
test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS)
|
||||||
test_DATA = std_data/client-key.pem std_data/client-cert.pem \
|
test_DATA = std_data/client-key.pem std_data/client-cert.pem \
|
||||||
std_data/cacert.pem std_data/server-cert.pem \
|
std_data/cacert.pem std_data/server-cert.pem \
|
||||||
@ -52,8 +52,8 @@ dist-hook:
|
|||||||
-$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t
|
-$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t
|
||||||
$(INSTALL_DATA) $(srcdir)/t/*.sql $(distdir)/t
|
$(INSTALL_DATA) $(srcdir)/t/*.sql $(distdir)/t
|
||||||
-$(INSTALL_DATA) $(srcdir)/t/*.disabled $(distdir)/t
|
-$(INSTALL_DATA) $(srcdir)/t/*.disabled $(distdir)/t
|
||||||
$(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t
|
-$(INSTALL_DATA) $(srcdir)/t/*.opt $(srcdir)/t/*.slave-mi $(distdir)/t
|
||||||
$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t
|
-$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(distdir)/t
|
||||||
$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(distdir)/extra/binlog_tests
|
$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(distdir)/extra/binlog_tests
|
||||||
$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(distdir)/extra/rpl_tests
|
$(INSTALL_DATA) $(srcdir)/extra/rpl_tests/*.test $(distdir)/extra/rpl_tests
|
||||||
-$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(distdir)/extra/binlog_tests
|
-$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.opt $(distdir)/extra/binlog_tests
|
||||||
@ -91,9 +91,9 @@ install-data-local:
|
|||||||
-$(INSTALL_DATA) $(srcdir)/t/*.imtest $(DESTDIR)$(testdir)/t
|
-$(INSTALL_DATA) $(srcdir)/t/*.imtest $(DESTDIR)$(testdir)/t
|
||||||
$(INSTALL_DATA) $(srcdir)/t/*.sql $(DESTDIR)$(testdir)/t
|
$(INSTALL_DATA) $(srcdir)/t/*.sql $(DESTDIR)$(testdir)/t
|
||||||
-$(INSTALL_DATA) $(srcdir)/t/*.disabled $(DESTDIR)$(testdir)/t
|
-$(INSTALL_DATA) $(srcdir)/t/*.disabled $(DESTDIR)$(testdir)/t
|
||||||
$(INSTALL_DATA) $(srcdir)/t/*.opt $(DESTDIR)$(testdir)/t
|
-$(INSTALL_DATA) $(srcdir)/t/*.opt $(DESTDIR)$(testdir)/t
|
||||||
$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t
|
-$(INSTALL_SCRIPT) $(srcdir)/t/*.sh $(DESTDIR)$(testdir)/t
|
||||||
$(INSTALL_DATA) $(srcdir)/t/*.slave-mi $(DESTDIR)$(testdir)/t
|
-$(INSTALL_DATA) $(srcdir)/t/*.slave-mi $(DESTDIR)$(testdir)/t
|
||||||
$(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r
|
$(INSTALL_DATA) $(srcdir)/r/*.result $(DESTDIR)$(testdir)/r
|
||||||
$(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r
|
$(INSTALL_DATA) $(srcdir)/r/*.require $(DESTDIR)$(testdir)/r
|
||||||
$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(DESTDIR)$(testdir)/extra/binlog_tests
|
$(INSTALL_DATA) $(srcdir)/extra/binlog_tests/*.test $(DESTDIR)$(testdir)/extra/binlog_tests
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
-- source include/have_log_bin.inc
|
-- source include/have_log_bin.inc
|
||||||
-- source include/not_embedded.inc
|
-- source include/not_embedded.inc
|
||||||
-- source include/have_innodb.inc
|
-- source include/have_innodb.inc
|
||||||
-- source include/have_log_bin.inc
|
|
||||||
-- source include/have_debug.inc
|
-- source include/have_debug.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
@ -49,6 +48,68 @@ show binlog events in 'master-bin.000001' from 106;
|
|||||||
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
--replace_regex /table_id: [0-9]+/table_id: #/ /\/\* xid=.* \*\//\/* xid= *\//
|
||||||
show binlog events in 'master-bin.000002' from 106;
|
show binlog events in 'master-bin.000002' from 106;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#22540 - Incorrect value in column End_log_pos of
|
||||||
|
# SHOW BINLOG EVENTS using InnoDB
|
||||||
|
#
|
||||||
|
|
||||||
|
# the following tests will show that certain queries now return
|
||||||
|
# absolute offsets (from binlog start, rather than relative to
|
||||||
|
# the beginning of the current transaction). under what
|
||||||
|
# conditions it should be allowed / is sensible to put the
|
||||||
|
# slider into the middle of a transaction is not our concern
|
||||||
|
# here; we just guarantee that if and when it's done, the
|
||||||
|
# user has valid offsets to use. if the setter function still
|
||||||
|
# wants to throw a "positioning into middle of transaction"
|
||||||
|
# warning, that's its prerogative and handled elsewhere.
|
||||||
|
|
||||||
|
set @ac = @@autocommit;
|
||||||
|
|
||||||
|
# first show this to work for SHOW BINLOG EVENTS
|
||||||
|
|
||||||
|
set autocommit= 0;
|
||||||
|
reset master;
|
||||||
|
create table t1(n int) engine=innodb;
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1);
|
||||||
|
insert into t1 values (2);
|
||||||
|
insert into t1 values (3);
|
||||||
|
commit;
|
||||||
|
drop table t1;
|
||||||
|
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
|
||||||
|
show binlog events from 0;
|
||||||
|
|
||||||
|
# now show that nothing breaks if we need to read from the cache more
|
||||||
|
# than once, resulting in split event-headers
|
||||||
|
|
||||||
|
set @bcs = @@binlog_cache_size;
|
||||||
|
set global binlog_cache_size=4096;
|
||||||
|
reset master;
|
||||||
|
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
|
||||||
|
let $1=400;
|
||||||
|
disable_query_log;
|
||||||
|
begin;
|
||||||
|
while ($1)
|
||||||
|
{
|
||||||
|
eval insert into t1 values( $1 );
|
||||||
|
dec $1;
|
||||||
|
}
|
||||||
|
commit;
|
||||||
|
enable_query_log;
|
||||||
|
|
||||||
|
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /Server ver: [^,]*,/Server version,/
|
||||||
|
show binlog events from 0;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
set global binlog_cache_size=@bcs;
|
||||||
|
set session autocommit = @ac;
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
# Test of a too big SET INSERT_ID: see if the truncated value goes
|
# Test of a too big SET INSERT_ID: see if the truncated value goes
|
||||||
# into binlog (right), or the too big value (wrong); we look at the
|
# into binlog (right), or the too big value (wrong); we look at the
|
||||||
# binlog further down with SHOW BINLOG EVENTS.
|
# binlog further down with SHOW BINLOG EVENTS.
|
||||||
|
@ -164,8 +164,8 @@ CREATE TABLE t1 (word CHAR(20) NOT NULL PRIMARY KEY) ENGINE=INNODB;
|
|||||||
--error ER_DUP_ENTRY
|
--error ER_DUP_ENTRY
|
||||||
LOAD DATA INFILE "../std_data_ln/words.dat" INTO TABLE t1;
|
LOAD DATA INFILE "../std_data_ln/words.dat" INTO TABLE t1;
|
||||||
|
|
||||||
--disable warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
--enable warnings
|
--enable_warnings
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
# Check that server is compiled and started with support for NDB
|
# Check that server is compiled and started with support for NDB
|
||||||
disable_query_log;
|
#disable_query_log;
|
||||||
--require r/true.require
|
#--require r/true.require
|
||||||
select (support = 'YES' or support = 'DEFAULT') as `TRUE` from information_schema.engines where engine = 'ndbcluster';
|
#select (support = 'YES' or support = 'DEFAULT') as `TRUE` from information_schema.engines where engine = 'ndbcluster';
|
||||||
--source include/ndb_not_readonly.inc
|
#--source include/ndb_not_readonly.inc
|
||||||
enable_query_log;
|
#enable_query_log;
|
||||||
|
# always make sure we have both mysql servers started ok before test starts
|
||||||
|
# there are some initial startup bugs that are avoided by doing this, avoiding sporadic
|
||||||
|
# failures in mysql-test-run
|
||||||
|
--source include/have_multi_ndb.inc
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-- require r/have_outfile.require
|
-- require r/have_outfile.require
|
||||||
disable_query_log;
|
disable_query_log;
|
||||||
select load_file(concat(@tmpdir,"/outfile.test"));
|
select load_file(concat(@tmpdir,"/outfile.test"));
|
||||||
--exec rm $MYSQLTEST_VARDIR/tmp/outfile.test
|
--remove_file $MYSQLTEST_VARDIR/tmp/outfile.test
|
||||||
enable_query_log;
|
enable_query_log;
|
||||||
|
@ -439,3 +439,51 @@ INSERT INTO t2(a,b) VALUES(1,2);
|
|||||||
SELECT t2.a FROM t1,t2 WHERE t2.b=2 AND t2.a=1;
|
SELECT t2.a FROM t1,t2 WHERE t2.b=2 AND t2.a=1;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#29740: HA_KEY_SCAN_NOT_ROR wasn't set for HEAP engine
|
||||||
|
#
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`filler` char(200) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL,
|
||||||
|
KEY `a` (`a`),
|
||||||
|
KEY `b` (`b`)
|
||||||
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
|
insert into t1 values
|
||||||
|
(0, 'filler', 0), (1, 'filler', 1), (2, 'filler', 2), (3, 'filler', 3),
|
||||||
|
(4, 'filler', 4), (5, 'filler', 5), (6, 'filler', 6), (7, 'filler', 7),
|
||||||
|
(8, 'filler', 8), (9, 'filler', 9), (0, 'filler', 0), (1, 'filler', 1),
|
||||||
|
(2, 'filler', 2), (3, 'filler', 3), (4, 'filler', 4), (5, 'filler', 5),
|
||||||
|
(6, 'filler', 6), (7, 'filler', 7), (8, 'filler', 8), (9, 'filler', 9),
|
||||||
|
(10, 'filler', 10), (11, 'filler', 11), (12, 'filler', 12), (13, 'filler', 13),
|
||||||
|
(14, 'filler', 14), (15, 'filler', 15), (16, 'filler', 16), (17, 'filler', 17),
|
||||||
|
(18, 'filler', 18), (19, 'filler', 19), (4, '5 ', 0), (5, '4 ', 0),
|
||||||
|
(4, '4 ', 0), (4, 'qq ', 5), (5, 'qq ', 4), (4, 'zz ', 4);
|
||||||
|
|
||||||
|
create table t2(
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`filler` char(200) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL,
|
||||||
|
KEY USING BTREE (`a`),
|
||||||
|
KEY USING BTREE (`b`)
|
||||||
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
|
||||||
|
--echo must use sort-union rather than union:
|
||||||
|
--replace_column 9 #
|
||||||
|
explain select * from t1 where a=4 or b=4;
|
||||||
|
--sorted_result
|
||||||
|
select * from t1 where a=4 or b=4;
|
||||||
|
--sorted_result
|
||||||
|
select * from t1 ignore index(a,b) where a=4 or b=4;
|
||||||
|
|
||||||
|
--echo must use union, not sort-union:
|
||||||
|
--replace_column 9 #
|
||||||
|
explain select * from t2 where a=4 or b=4;
|
||||||
|
--sorted_result
|
||||||
|
select * from t2 where a=4 or b=4;
|
||||||
|
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
|
51
mysql-test/include/innodb_trx_weight.inc
Normal file
51
mysql-test/include/innodb_trx_weight.inc
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
-- connect (con1,localhost,root,,)
|
||||||
|
-- connect (con2,localhost,root,,)
|
||||||
|
|
||||||
|
-- connection con1
|
||||||
|
SET autocommit=0;
|
||||||
|
SELECT * FROM t1 FOR UPDATE;
|
||||||
|
-- if ($con1_extra_sql_present) {
|
||||||
|
-- eval $con1_extra_sql
|
||||||
|
-- }
|
||||||
|
|
||||||
|
-- connection con2
|
||||||
|
SET autocommit=0;
|
||||||
|
SELECT * FROM t2 FOR UPDATE;
|
||||||
|
-- if ($con2_extra_sql_present) {
|
||||||
|
-- eval $con2_extra_sql
|
||||||
|
-- }
|
||||||
|
|
||||||
|
-- if ($con1_should_be_rolledback) {
|
||||||
|
-- connection con1
|
||||||
|
-- send
|
||||||
|
INSERT INTO t2 VALUES (0);
|
||||||
|
|
||||||
|
-- connection con2
|
||||||
|
INSERT INTO t1 VALUES (0);
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
-- connection con1
|
||||||
|
-- error ER_LOCK_DEADLOCK
|
||||||
|
-- reap
|
||||||
|
-- }
|
||||||
|
# else
|
||||||
|
-- if (!$con1_should_be_rolledback) {
|
||||||
|
-- connection con2
|
||||||
|
-- send
|
||||||
|
INSERT INTO t1 VALUES (0);
|
||||||
|
|
||||||
|
-- connection con1
|
||||||
|
INSERT INTO t2 VALUES (0);
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
-- connection con2
|
||||||
|
-- error ER_LOCK_DEADLOCK
|
||||||
|
-- reap
|
||||||
|
-- }
|
||||||
|
|
||||||
|
-- connection default
|
||||||
|
|
||||||
|
DELETE FROM t5_nontrans;
|
||||||
|
|
||||||
|
-- disconnect con1
|
||||||
|
-- disconnect con2
|
@ -28,7 +28,7 @@
|
|||||||
eval SET SESSION STORAGE_ENGINE = $engine_type;
|
eval SET SESSION STORAGE_ENGINE = $engine_type;
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1,t2,t1m,t1i,t2m,t2i,t4;
|
drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
|
||||||
@ -222,9 +222,6 @@ t1.a4='UNcT5pIde4I6c2SheTo4gt92OV1jgJCVkXmzyf325R1DwLURkbYHwhydANIZMbKTgdcR5xS';
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--echo End of 4.1 tests
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #12882 min/max inconsistent on empty table
|
# Bug #12882 min/max inconsistent on empty table
|
||||||
#
|
#
|
||||||
@ -423,24 +420,6 @@ SELECT COUNT(*) FROM t2 LEFT JOIN t1 ON t2.fkey = t1.id
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
#
|
|
||||||
# Bug#22781: SQL_BIG_RESULT fails to influence sort plan
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c FLOAT, KEY b(b)) ENGINE = INNODB;
|
|
||||||
|
|
||||||
INSERT INTO t1 VALUES ( 1 , 1 , 1);
|
|
||||||
INSERT INTO t1 SELECT a + 1 , MOD(a + 1 , 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 2 , MOD(a + 2 , 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 4 , MOD(a + 4 , 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 8 , MOD(a + 8 , 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 16, MOD(a + 16, 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 32, MOD(a + 32, 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 64, MOD(a + 64, 20), 1 FROM t1;
|
|
||||||
|
|
||||||
EXPLAIN SELECT b, SUM(c) FROM t1 GROUP BY b;
|
|
||||||
EXPLAIN SELECT SQL_BIG_RESULT b, SUM(c) FROM t1 GROUP BY b;
|
|
||||||
DROP TABLE t1;
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#26159: crash for a loose scan of a table that has been emptied
|
# Bug#26159: crash for a loose scan of a table that has been emptied
|
||||||
#
|
#
|
||||||
@ -501,40 +480,6 @@ set global query_cache_size=@save_qcache_size;
|
|||||||
|
|
||||||
--source include/innodb_rollback_on_timeout.inc
|
--source include/innodb_rollback_on_timeout.inc
|
||||||
|
|
||||||
#
|
|
||||||
# Bug #27210: INNODB ON DUPLICATE KEY UPDATE
|
|
||||||
#
|
|
||||||
|
|
||||||
set @save_qcache_size=@@global.query_cache_size;
|
|
||||||
set @save_qcache_type=@@global.query_cache_type;
|
|
||||||
set global query_cache_size=10*1024*1024;
|
|
||||||
set global query_cache_type=1;
|
|
||||||
connect (con1,localhost,root,,);
|
|
||||||
connection con1;
|
|
||||||
drop table if exists `test`;
|
|
||||||
CREATE TABLE `test` (`test1` varchar(3) NOT NULL,
|
|
||||||
`test2` varchar(4) NOT NULL,PRIMARY KEY (`test1`))
|
|
||||||
ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
|
||||||
INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '5678');
|
|
||||||
disconnect con1;
|
|
||||||
connect (con2,localhost,root,,);
|
|
||||||
connection con2;
|
|
||||||
select * from test;
|
|
||||||
INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '1234')
|
|
||||||
ON DUPLICATE KEY UPDATE `test2` = '1234';
|
|
||||||
select * from test;
|
|
||||||
flush tables;
|
|
||||||
select * from test;
|
|
||||||
disconnect con2;
|
|
||||||
connection default;
|
|
||||||
drop table test;
|
|
||||||
set global query_cache_type=@save_qcache_type;
|
|
||||||
set global query_cache_size=@save_qcache_size;
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
|
||||||
|
|
||||||
-- source include/have_innodb.inc
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #27650: INSERT fails after multi-row INSERT of the form:
|
# Bug #27650: INSERT fails after multi-row INSERT of the form:
|
||||||
# INSERT INTO t (id...) VALUES (NULL...) ON DUPLICATE KEY UPDATE id=VALUES(id)
|
# INSERT INTO t (id...) VALUES (NULL...) ON DUPLICATE KEY UPDATE id=VALUES(id)
|
||||||
@ -672,6 +617,20 @@ SELECT * FROM t3 WHERE a = 'uk';
|
|||||||
|
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test bug when trying to drop data file which no InnoDB directory entry
|
||||||
|
#
|
||||||
|
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
copy_file $MYSQLTEST_VARDIR/master-data/test/t1.frm $MYSQLTEST_VARDIR/master-data/test/bug29807.frm;
|
||||||
|
--error 1146
|
||||||
|
select * from bug29807;
|
||||||
|
drop table t1;
|
||||||
|
--error 1051
|
||||||
|
drop table bug29807;
|
||||||
|
create table bug29807 (a int);
|
||||||
|
drop table bug29807;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug #29154: LOCK TABLES is not atomic when >1 InnoDB tables are locked
|
# Bug #29154: LOCK TABLES is not atomic when >1 InnoDB tables are locked
|
||||||
@ -706,8 +665,62 @@ DISCONNECT c1;
|
|||||||
DISCONNECT c2;
|
DISCONNECT c2;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #25798: a query with forced index merge returns wrong result
|
||||||
|
#
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
CREATE TABLE t1 (
|
||||||
|
id int NOT NULL auto_increment PRIMARY KEY,
|
||||||
|
b int NOT NULL,
|
||||||
|
c datetime NOT NULL,
|
||||||
|
INDEX idx_b(b),
|
||||||
|
INDEX idx_c(c)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
b int NOT NULL auto_increment PRIMARY KEY,
|
||||||
|
c datetime NOT NULL
|
||||||
|
) ENGINE= MyISAM;
|
||||||
|
|
||||||
|
INSERT INTO t2(c) VALUES ('2007-01-01');
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
|
||||||
|
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||||
|
UPDATE t2 SET c='2007-01-02';
|
||||||
|
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||||
|
UPDATE t2 SET c='2007-01-03';
|
||||||
|
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||||
|
|
||||||
|
set @@sort_buffer_size=8192;
|
||||||
|
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
|
||||||
|
--replace_column 9 #
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM t1
|
||||||
|
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||||
|
SELECT COUNT(*) FROM t1
|
||||||
|
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||||
|
|
||||||
|
--replace_column 9 #
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
||||||
|
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
||||||
|
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||||
|
|
||||||
|
set @@sort_buffer_size=default;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test of behaviour with CREATE ... SELECT
|
# Test of behaviour with CREATE ... SELECT
|
||||||
@ -786,6 +799,21 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
--source include/innodb_rollback_on_timeout.inc
|
--source include/innodb_rollback_on_timeout.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#27296 Assertion in ALTER TABLE SET DEFAULT in Linux Debug build
|
||||||
|
# (possible deadlock).
|
||||||
|
#
|
||||||
|
# The bug is applicable only to a transactoinal table.
|
||||||
|
# Cover with tests behavior that no longer causes an
|
||||||
|
# assertion.
|
||||||
|
#
|
||||||
|
--disable_warnings
|
||||||
|
drop table if exists t1;
|
||||||
|
--enable_warnings
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
alter table t1 alter a set default 1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
|
|
||||||
@ -889,5 +917,29 @@ unlock tables;
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
drop tables t1;
|
drop tables t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#29310: An InnoDB table was updated when the data wasn't actually changed.
|
||||||
|
#
|
||||||
|
create table t1(f1 varchar(5) unique, f2 timestamp NOT NULL DEFAULT
|
||||||
|
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
|
||||||
|
insert into t1(f1) values(1);
|
||||||
|
--replace_column 1 #
|
||||||
|
select @a:=f2 from t1;
|
||||||
|
--sleep 5
|
||||||
|
update t1 set f1=1;
|
||||||
|
--replace_column 1 #
|
||||||
|
select @b:=f2 from t1;
|
||||||
|
select if(@a=@b,"ok","wrong");
|
||||||
|
--sleep 5
|
||||||
|
insert into t1(f1) values (1) on duplicate key update f1="1";
|
||||||
|
--replace_column 1 #
|
||||||
|
select @b:=f2 from t1;
|
||||||
|
select if(@a=@b,"ok","wrong");
|
||||||
|
--sleep 5
|
||||||
|
insert into t1(f1) select f1 from t1 on duplicate key update f1="1";
|
||||||
|
--replace_column 1 #
|
||||||
|
select @b:=f2 from t1;
|
||||||
|
select if(@a=@b,"ok","wrong");
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -4,7 +4,12 @@ connect (slave,127.0.0.1,root,,test,$SLAVE_MYPORT,);
|
|||||||
connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,);
|
connect (slave1,127.0.0.1,root,,test,$SLAVE_MYPORT,);
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
-- source include/have_ndb.inc
|
# Check that server is compiled and started with support for NDB
|
||||||
|
disable_query_log;
|
||||||
|
--require r/true.require
|
||||||
|
select (support = 'YES' or support = 'DEFAULT') as `TRUE` from information_schema.engines where engine = 'ndbcluster';
|
||||||
|
--source include/ndb_not_readonly.inc
|
||||||
|
enable_query_log;
|
||||||
|
|
||||||
-- source include/master-slave-reset.inc
|
-- source include/master-slave-reset.inc
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ use IO::File();
|
|||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
sub collect_test_cases ($);
|
sub collect_test_cases ($);
|
||||||
sub collect_one_test_case ($$$$$$$);
|
sub collect_one_suite ($$);
|
||||||
|
sub collect_one_test_case ($$$$$$$$$);
|
||||||
|
|
||||||
sub mtr_options_from_test_file($$);
|
sub mtr_options_from_test_file($$);
|
||||||
|
|
||||||
@ -34,147 +35,39 @@ sub mtr_options_from_test_file($$);
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
sub collect_test_cases ($) {
|
sub collect_test_cases ($) {
|
||||||
my $suite= shift; # Test suite name
|
my $suites= shift; # Semicolon separated list of test suites
|
||||||
|
my $cases = []; # Array of hash
|
||||||
|
|
||||||
my $testdir;
|
foreach my $suite (split(",", $suites))
|
||||||
my $resdir;
|
|
||||||
|
|
||||||
if ( $suite eq "main" )
|
|
||||||
{
|
{
|
||||||
$testdir= "$::glob_mysql_test_dir/t";
|
collect_one_suite($suite, $cases);
|
||||||
$resdir= "$::glob_mysql_test_dir/r";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$testdir= "$::glob_mysql_test_dir/suite/$suite/t";
|
|
||||||
$resdir= "$::glob_mysql_test_dir/suite/$suite/r";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
my $cases = []; # Array of hash, will be array of C struct
|
|
||||||
|
|
||||||
opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!");
|
|
||||||
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
# Disable some tests listed in disabled.def
|
|
||||||
# ----------------------------------------------------------------------
|
|
||||||
my %disabled;
|
|
||||||
if ( open(DISABLED, "$testdir/disabled.def" ) )
|
|
||||||
{
|
|
||||||
while ( <DISABLED> )
|
|
||||||
{
|
|
||||||
chomp;
|
|
||||||
if ( /^\s*(\S+)\s*:\s*(.*?)\s*$/ )
|
|
||||||
{
|
|
||||||
$disabled{$1}= $2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
close DISABLED;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( @::opt_cases )
|
if ( @::opt_cases )
|
||||||
{
|
{
|
||||||
|
# Check that the tests specified was found
|
||||||
|
# in at least one suite
|
||||||
foreach my $tname ( @::opt_cases )
|
foreach my $tname ( @::opt_cases )
|
||||||
{
|
{
|
||||||
# Run in specified order, no sort
|
my $found= 0;
|
||||||
my $elem= undef;
|
foreach my $test ( @$cases )
|
||||||
my $component_id= undef;
|
|
||||||
|
|
||||||
# Get rid of directory part (path). Leave the extension since it is used
|
|
||||||
# to understand type of the test.
|
|
||||||
|
|
||||||
$tname = basename($tname);
|
|
||||||
|
|
||||||
# Check if the extenstion has been specified.
|
|
||||||
|
|
||||||
if ( mtr_match_extension($tname, "test") )
|
|
||||||
{
|
{
|
||||||
$elem= $tname;
|
if ( mtr_match_extension($test->{'name'}, $tname) )
|
||||||
$tname=~ s/\.test$//;
|
{
|
||||||
$component_id= 'mysqld';
|
$found= 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
elsif ( mtr_match_extension($tname, "imtest") )
|
if ( not $found )
|
||||||
{
|
{
|
||||||
$elem= $tname;
|
mtr_error("Could not find $tname in any suite");
|
||||||
$tname =~ s/\.imtest$//;
|
|
||||||
$component_id= 'im';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# If target component is known, check that the specified test case
|
|
||||||
# exists.
|
|
||||||
#
|
|
||||||
# Otherwise, try to guess the target component.
|
|
||||||
|
|
||||||
if ( $component_id )
|
|
||||||
{
|
|
||||||
if ( ! -f "$testdir/$elem")
|
|
||||||
{
|
|
||||||
mtr_error("Test case $tname ($testdir/$elem) is not found");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
my $mysqld_test_exists = -f "$testdir/$tname.test";
|
|
||||||
my $im_test_exists = -f "$testdir/$tname.imtest";
|
|
||||||
|
|
||||||
if ( $mysqld_test_exists and $im_test_exists )
|
|
||||||
{
|
|
||||||
mtr_error("Ambiguous test case name ($tname)");
|
|
||||||
}
|
|
||||||
elsif ( ! $mysqld_test_exists and ! $im_test_exists )
|
|
||||||
{
|
|
||||||
mtr_error("Test case $tname is not found");
|
|
||||||
}
|
|
||||||
elsif ( $mysqld_test_exists )
|
|
||||||
{
|
|
||||||
$elem= "$tname.test";
|
|
||||||
$component_id= 'mysqld';
|
|
||||||
}
|
|
||||||
elsif ( $im_test_exists )
|
|
||||||
{
|
|
||||||
$elem= "$tname.imtest";
|
|
||||||
$component_id= 'im';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled,
|
|
||||||
$component_id);
|
|
||||||
}
|
}
|
||||||
closedir TESTDIR;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
foreach my $elem ( sort readdir(TESTDIR) )
|
|
||||||
{
|
|
||||||
my $component_id= undef;
|
|
||||||
my $tname= undef;
|
|
||||||
|
|
||||||
if ($tname= mtr_match_extension($elem, 'test'))
|
|
||||||
{
|
|
||||||
$component_id = 'mysqld';
|
|
||||||
}
|
|
||||||
elsif ($tname= mtr_match_extension($elem, 'imtest'))
|
|
||||||
{
|
|
||||||
$component_id = 'im';
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Skip tests that does not match the --do-test= filter
|
|
||||||
next if $::opt_do_test and
|
|
||||||
! defined mtr_match_prefix($elem,$::opt_do_test);
|
|
||||||
|
|
||||||
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled,
|
|
||||||
$component_id);
|
|
||||||
}
|
|
||||||
closedir TESTDIR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Reorder the test cases in an order that will make them faster to run
|
|
||||||
if ( $::opt_reorder )
|
if ( $::opt_reorder )
|
||||||
{
|
{
|
||||||
|
# Reorder the test cases in an order that will make them faster to run
|
||||||
my %sort_criteria;
|
my %sort_criteria;
|
||||||
|
|
||||||
# Make a mapping of test name to a string that represents how that test
|
# Make a mapping of test name to a string that represents how that test
|
||||||
@ -246,6 +139,160 @@ sub collect_test_cases ($) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return $cases;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub collect_one_suite($$)
|
||||||
|
{
|
||||||
|
my $suite= shift; # Test suite name
|
||||||
|
my $cases= shift; # List of test cases
|
||||||
|
|
||||||
|
mtr_verbose("Collecting: $suite");
|
||||||
|
|
||||||
|
my $testdir;
|
||||||
|
my $resdir;
|
||||||
|
|
||||||
|
if ( $suite eq "main" )
|
||||||
|
{
|
||||||
|
$testdir= "$::glob_mysql_test_dir/t";
|
||||||
|
$resdir= "$::glob_mysql_test_dir/r";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$testdir= "$::glob_mysql_test_dir/suite/$suite/t";
|
||||||
|
$resdir= "$::glob_mysql_test_dir/suite/$suite/r";
|
||||||
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# Build a hash of disabled testcases for this suite
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
my %disabled;
|
||||||
|
if ( open(DISABLED, "$testdir/disabled.def" ) )
|
||||||
|
{
|
||||||
|
while ( <DISABLED> )
|
||||||
|
{
|
||||||
|
chomp;
|
||||||
|
if ( /^\s*(\S+)\s*:\s*(.*?)\s*$/ )
|
||||||
|
{
|
||||||
|
$disabled{$1}= $2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close DISABLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Read suite.opt file
|
||||||
|
my $suite_opt_file= "$testdir/suite.opt";
|
||||||
|
my $suite_opts= [];
|
||||||
|
if ( -f $suite_opt_file )
|
||||||
|
{
|
||||||
|
$suite_opts= mtr_get_opts_from_file($suite_opt_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( @::opt_cases )
|
||||||
|
{
|
||||||
|
# Collect in specified order, no sort
|
||||||
|
foreach my $tname ( @::opt_cases )
|
||||||
|
{
|
||||||
|
my $elem= undef;
|
||||||
|
my $component_id= undef;
|
||||||
|
|
||||||
|
# Get rid of directory part (path). Leave the extension since it is used
|
||||||
|
# to understand type of the test.
|
||||||
|
|
||||||
|
$tname = basename($tname);
|
||||||
|
|
||||||
|
# Check if the extenstion has been specified.
|
||||||
|
|
||||||
|
if ( mtr_match_extension($tname, "test") )
|
||||||
|
{
|
||||||
|
$elem= $tname;
|
||||||
|
$tname=~ s/\.test$//;
|
||||||
|
$component_id= 'mysqld';
|
||||||
|
}
|
||||||
|
elsif ( mtr_match_extension($tname, "imtest") )
|
||||||
|
{
|
||||||
|
$elem= $tname;
|
||||||
|
$tname =~ s/\.imtest$//;
|
||||||
|
$component_id= 'im';
|
||||||
|
}
|
||||||
|
|
||||||
|
# If target component is known, check that the specified test case
|
||||||
|
# exists.
|
||||||
|
#
|
||||||
|
# Otherwise, try to guess the target component.
|
||||||
|
|
||||||
|
if ( $component_id )
|
||||||
|
{
|
||||||
|
if ( ! -f "$testdir/$elem")
|
||||||
|
{
|
||||||
|
mtr_error("Test case $tname ($testdir/$elem) is not found");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my $mysqld_test_exists = -f "$testdir/$tname.test";
|
||||||
|
my $im_test_exists = -f "$testdir/$tname.imtest";
|
||||||
|
|
||||||
|
if ( $mysqld_test_exists and $im_test_exists )
|
||||||
|
{
|
||||||
|
mtr_error("Ambiguous test case name ($tname)");
|
||||||
|
}
|
||||||
|
elsif ( ! $mysqld_test_exists and ! $im_test_exists )
|
||||||
|
{
|
||||||
|
# Silently skip, could exist in another suite
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
elsif ( $mysqld_test_exists )
|
||||||
|
{
|
||||||
|
$elem= "$tname.test";
|
||||||
|
$component_id= 'mysqld';
|
||||||
|
}
|
||||||
|
elsif ( $im_test_exists )
|
||||||
|
{
|
||||||
|
$elem= "$tname.imtest";
|
||||||
|
$component_id= 'im';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
collect_one_test_case($testdir,$resdir,$suite,$tname,
|
||||||
|
$elem,$cases,\%disabled,$component_id,
|
||||||
|
$suite_opts);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
opendir(TESTDIR, $testdir) or mtr_error("Can't open dir \"$testdir\": $!");
|
||||||
|
|
||||||
|
foreach my $elem ( sort readdir(TESTDIR) )
|
||||||
|
{
|
||||||
|
my $component_id= undef;
|
||||||
|
my $tname= undef;
|
||||||
|
|
||||||
|
if ($tname= mtr_match_extension($elem, 'test'))
|
||||||
|
{
|
||||||
|
$component_id = 'mysqld';
|
||||||
|
}
|
||||||
|
elsif ($tname= mtr_match_extension($elem, 'imtest'))
|
||||||
|
{
|
||||||
|
$component_id = 'im';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Skip tests that does not match the --do-test= filter
|
||||||
|
next if $::opt_do_test and
|
||||||
|
! defined mtr_match_prefix($elem,$::opt_do_test);
|
||||||
|
|
||||||
|
collect_one_test_case($testdir,$resdir,$suite,$tname,
|
||||||
|
$elem,$cases,\%disabled,$component_id,
|
||||||
|
$suite_opts);
|
||||||
|
}
|
||||||
|
closedir TESTDIR;
|
||||||
|
}
|
||||||
|
|
||||||
return $cases;
|
return $cases;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -257,14 +304,16 @@ sub collect_test_cases ($) {
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
|
||||||
sub collect_one_test_case($$$$$$$) {
|
sub collect_one_test_case($$$$$$$$$) {
|
||||||
my $testdir= shift;
|
my $testdir= shift;
|
||||||
my $resdir= shift;
|
my $resdir= shift;
|
||||||
|
my $suite= shift;
|
||||||
my $tname= shift;
|
my $tname= shift;
|
||||||
my $elem= shift;
|
my $elem= shift;
|
||||||
my $cases= shift;
|
my $cases= shift;
|
||||||
my $disabled=shift;
|
my $disabled=shift;
|
||||||
my $component_id= shift;
|
my $component_id= shift;
|
||||||
|
my $suite_opts= shift;
|
||||||
|
|
||||||
my $path= "$testdir/$elem";
|
my $path= "$testdir/$elem";
|
||||||
|
|
||||||
@ -279,7 +328,7 @@ sub collect_one_test_case($$$$$$$) {
|
|||||||
|
|
||||||
|
|
||||||
my $tinfo= {};
|
my $tinfo= {};
|
||||||
$tinfo->{'name'}= $tname;
|
$tinfo->{'name'}= "$suite.$tname";
|
||||||
$tinfo->{'result_file'}= "$resdir/$tname.result";
|
$tinfo->{'result_file'}= "$resdir/$tname.result";
|
||||||
$tinfo->{'component_id'} = $component_id;
|
$tinfo->{'component_id'} = $component_id;
|
||||||
push(@$cases, $tinfo);
|
push(@$cases, $tinfo);
|
||||||
@ -334,6 +383,15 @@ sub collect_one_test_case($$$$$$$) {
|
|||||||
$tinfo->{'slave_opt'}= [];
|
$tinfo->{'slave_opt'}= [];
|
||||||
$tinfo->{'slave_mi'}= [];
|
$tinfo->{'slave_mi'}= [];
|
||||||
|
|
||||||
|
# Add suite opts
|
||||||
|
foreach my $opt ( @$suite_opts )
|
||||||
|
{
|
||||||
|
mtr_verbose($opt);
|
||||||
|
push(@{$tinfo->{'master_opt'}}, $opt);
|
||||||
|
push(@{$tinfo->{'slave_opt'}}, $opt);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add master opts
|
||||||
if ( -f $master_opt_file )
|
if ( -f $master_opt_file )
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -394,6 +452,7 @@ sub collect_one_test_case($$$$$$$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Add slave opts
|
||||||
if ( -f $slave_opt_file )
|
if ( -f $slave_opt_file )
|
||||||
{
|
{
|
||||||
my $slave_opt= mtr_get_opts_from_file($slave_opt_file);
|
my $slave_opt= mtr_get_opts_from_file($slave_opt_file);
|
||||||
|
@ -142,6 +142,7 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
|
|
||||||
if ( $pid )
|
if ( $pid )
|
||||||
{
|
{
|
||||||
|
select(STDOUT) if $::glob_win32_perl;
|
||||||
return spawn_parent_impl($pid,$mode,$path);
|
return spawn_parent_impl($pid,$mode,$path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -163,9 +164,6 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
{
|
{
|
||||||
# Don't redirect stdout on ActiveState perl since this is
|
# Don't redirect stdout on ActiveState perl since this is
|
||||||
# just another thread in the same process.
|
# just another thread in the same process.
|
||||||
# Should be fixed so that the thread that is created with fork
|
|
||||||
# executes the exe in another process and wait's for it to return.
|
|
||||||
# In the meanwhile, we get all the output from mysqld's to screen
|
|
||||||
}
|
}
|
||||||
elsif ( ! open(STDOUT,$log_file_open_mode,$output) )
|
elsif ( ! open(STDOUT,$log_file_open_mode,$output) )
|
||||||
{
|
{
|
||||||
@ -175,7 +173,7 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
|
|
||||||
if ( $error )
|
if ( $error )
|
||||||
{
|
{
|
||||||
if ( $output eq $error )
|
if ( !$::glob_win32_perl and $output eq $error )
|
||||||
{
|
{
|
||||||
if ( ! open(STDERR,">&STDOUT") )
|
if ( ! open(STDERR,">&STDOUT") )
|
||||||
{
|
{
|
||||||
@ -184,15 +182,7 @@ sub spawn_impl ($$$$$$$) {
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( $::glob_win32_perl )
|
if ( ! open(STDERR,$log_file_open_mode,$error) )
|
||||||
{
|
|
||||||
# Don't redirect stdout on ActiveState perl since this is
|
|
||||||
# just another thread in the same process.
|
|
||||||
# Should be fixed so that the thread that is created with fork
|
|
||||||
# executes the exe in another process and wait's for it to return.
|
|
||||||
# In the meanwhile, we get all the output from mysqld's to screen
|
|
||||||
}
|
|
||||||
elsif ( ! open(STDERR,$log_file_open_mode,$error) )
|
|
||||||
{
|
{
|
||||||
mtr_child_error("can't redirect STDERR to \"$error\": $!");
|
mtr_child_error("can't redirect STDERR to \"$error\": $!");
|
||||||
}
|
}
|
||||||
@ -369,7 +359,7 @@ sub mtr_kill_leftovers () {
|
|||||||
"socket: '$srv->{path_sock}'; ".
|
"socket: '$srv->{path_sock}'; ".
|
||||||
"port: $srv->{port})");
|
"port: $srv->{port})");
|
||||||
|
|
||||||
my $pid= mtr_mysqladmin_start($srv, "shutdown", 70);
|
my $pid= mtr_mysqladmin_start($srv, "shutdown", 20);
|
||||||
|
|
||||||
# Save the pid of the mysqladmin process
|
# Save the pid of the mysqladmin process
|
||||||
$admin_pids{$pid}= 1;
|
$admin_pids{$pid}= 1;
|
||||||
@ -613,6 +603,11 @@ sub mtr_check_stop_servers ($) {
|
|||||||
if ( $pid )
|
if ( $pid )
|
||||||
{
|
{
|
||||||
# Server is still alive, put it in list to be hard killed
|
# Server is still alive, put it in list to be hard killed
|
||||||
|
if ($::glob_win32_perl)
|
||||||
|
{
|
||||||
|
# Kill the real process if it's known
|
||||||
|
$pid= $srv->{'real_pid'} if ($srv->{'real_pid'});
|
||||||
|
}
|
||||||
$kill_pids{$pid}= 1;
|
$kill_pids{$pid}= 1;
|
||||||
|
|
||||||
# Write a message to the process's error log (if it has one)
|
# Write a message to the process's error log (if it has one)
|
||||||
@ -666,6 +661,16 @@ sub mtr_check_stop_servers ($) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($::glob_win32_perl and $srv->{'real_pid'})
|
||||||
|
{
|
||||||
|
# Wait for the pseudo pid - if the real_pid was known
|
||||||
|
# the pseudo pid has not been waited for yet, wai blocking
|
||||||
|
# since it's "such a simple program"
|
||||||
|
mtr_verbose("Wait for pseudo process $srv->{'pid'}");
|
||||||
|
my $ret_pid= waitpid($srv->{'pid'}, 0);
|
||||||
|
mtr_verbose("Pseudo process $ret_pid died");
|
||||||
|
}
|
||||||
|
|
||||||
$srv->{'pid'}= 0;
|
$srv->{'pid'}= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1043,7 +1048,7 @@ sub sleep_until_file_created ($$$) {
|
|||||||
{
|
{
|
||||||
if ( -r $pidfile )
|
if ( -r $pidfile )
|
||||||
{
|
{
|
||||||
return $pid;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if it died after the fork() was successful
|
# Check if it died after the fork() was successful
|
||||||
|
@ -48,30 +48,15 @@ sub mtr_verbose (@);
|
|||||||
# We can't use diff -u or diff -a as these are not portable
|
# We can't use diff -u or diff -a as these are not portable
|
||||||
|
|
||||||
sub mtr_show_failed_diff ($) {
|
sub mtr_show_failed_diff ($) {
|
||||||
my $result_file_name= shift;
|
my $tinfo= shift;
|
||||||
|
|
||||||
# The reject and log files have been dumped to
|
# The reject and log files have been dumped to
|
||||||
# to filenames based on the result_file's name
|
# to filenames based on the result_file's name
|
||||||
my $tname= basename($result_file_name);
|
my $base_file= mtr_match_extension($tinfo->{'result_file'},
|
||||||
$tname=~ s/\..*$//;
|
"result"); # Trim extension
|
||||||
|
my $reject_file= "$base_file.reject";
|
||||||
my $reject_file= "r/$tname.reject";
|
my $result_file= "$base_file.result";
|
||||||
my $result_file= "r/$tname.result";
|
my $log_file= "$base_file.log";
|
||||||
my $log_file= "$::opt_vardir/log/$tname.log";
|
|
||||||
my $eval_file= "r/$tname.eval";
|
|
||||||
|
|
||||||
if ( $::opt_suite ne "main" )
|
|
||||||
{
|
|
||||||
$reject_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$reject_file";
|
|
||||||
$result_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$result_file";
|
|
||||||
$eval_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$eval_file";
|
|
||||||
$log_file= "$::glob_mysql_test_dir/suite/$::opt_suite/$log_file";
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( -f $eval_file )
|
|
||||||
{
|
|
||||||
$result_file= $eval_file;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $diffopts= $::opt_udiff ? "-u" : "-c";
|
my $diffopts= $::opt_udiff ? "-u" : "-c";
|
||||||
|
|
||||||
@ -360,6 +345,10 @@ sub mtr_report_stats ($) {
|
|||||||
/skip-name-resolve mode/ or
|
/skip-name-resolve mode/ or
|
||||||
/slave SQL thread aborted/ or
|
/slave SQL thread aborted/ or
|
||||||
/Slave: .*Duplicate entry/ or
|
/Slave: .*Duplicate entry/ or
|
||||||
|
# Special case for Bug #26402 in show_check.test
|
||||||
|
# Question marks are not valid file name parts
|
||||||
|
# on Windows platforms. Ignore this error message.
|
||||||
|
/\QCan't find file: '.\test\????????.frm'\E/ or
|
||||||
# Special case, made as specific as possible, for:
|
# Special case, made as specific as possible, for:
|
||||||
# Bug #28436: Incorrect position in SHOW BINLOG EVENTS causes
|
# Bug #28436: Incorrect position in SHOW BINLOG EVENTS causes
|
||||||
# server coredump
|
# server coredump
|
||||||
@ -369,7 +358,11 @@ sub mtr_report_stats ($) {
|
|||||||
# Test case for Bug#14233 produces the following warnings:
|
# Test case for Bug#14233 produces the following warnings:
|
||||||
/Stored routine 'test'.'bug14233_1': invalid value in column mysql.proc/ or
|
/Stored routine 'test'.'bug14233_1': invalid value in column mysql.proc/ or
|
||||||
/Stored routine 'test'.'bug14233_2': invalid value in column mysql.proc/ or
|
/Stored routine 'test'.'bug14233_2': invalid value in column mysql.proc/ or
|
||||||
/Stored routine 'test'.'bug14233_3': invalid value in column mysql.proc/
|
/Stored routine 'test'.'bug14233_3': invalid value in column mysql.proc/ or
|
||||||
|
|
||||||
|
# BUG#29807 - innodb_mysql.test: Cannot find table test/t2
|
||||||
|
# from the internal data dictionary
|
||||||
|
/Cannot find table test\/bug29807 from the internal data dictionary/
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
next; # Skip these lines
|
next; # Skip these lines
|
||||||
|
@ -97,9 +97,14 @@ sub mtr_timer_start($$$) {
|
|||||||
# clearing the signal handler.
|
# clearing the signal handler.
|
||||||
$SIG{INT}= 'DEFAULT';
|
$SIG{INT}= 'DEFAULT';
|
||||||
|
|
||||||
|
$SIG{TERM}= sub {
|
||||||
|
mtr_verbose("timer woke up, exiting!");
|
||||||
|
exit(0);
|
||||||
|
};
|
||||||
|
|
||||||
$0= "mtr_timer(timers,$name,$duration)";
|
$0= "mtr_timer(timers,$name,$duration)";
|
||||||
mtr_verbose("timer child $name, sleep $duration");
|
|
||||||
sleep($duration);
|
sleep($duration);
|
||||||
|
mtr_verbose("timer expired after $duration seconds");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -118,7 +123,7 @@ sub mtr_timer_stop ($$) {
|
|||||||
|
|
||||||
# FIXME as Cygwin reuses pids fast, maybe check that is
|
# FIXME as Cygwin reuses pids fast, maybe check that is
|
||||||
# the expected process somehow?!
|
# the expected process somehow?!
|
||||||
kill(9, $tpid);
|
kill(15, $tpid);
|
||||||
|
|
||||||
# As the timers are so simple programs, we trust them to terminate,
|
# As the timers are so simple programs, we trust them to terminate,
|
||||||
# and use blocking wait for it. We wait just to avoid a zombie.
|
# and use blocking wait for it. We wait just to avoid a zombie.
|
||||||
|
@ -132,7 +132,7 @@ our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
|
|||||||
our $default_vardir;
|
our $default_vardir;
|
||||||
|
|
||||||
our $opt_usage;
|
our $opt_usage;
|
||||||
our $opt_suite;
|
our $opt_suites= "main,binlog,rpl,rpl_ndb,ndb"; # Default suites to run
|
||||||
|
|
||||||
our $opt_script_debug= 0; # Script debugging, enable with --script-debug
|
our $opt_script_debug= 0; # Script debugging, enable with --script-debug
|
||||||
our $opt_verbose= 0; # Verbose output, enable with --verbose
|
our $opt_verbose= 0; # Verbose output, enable with --verbose
|
||||||
@ -404,7 +404,7 @@ sub main () {
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
# Figure out which tests we are going to run
|
# Figure out which tests we are going to run
|
||||||
my $tests= collect_test_cases($opt_suite);
|
my $tests= collect_test_cases($opt_suites);
|
||||||
|
|
||||||
# Turn off NDB and other similar options if no tests use it
|
# Turn off NDB and other similar options if no tests use it
|
||||||
my ($need_ndbcluster,$need_im);
|
my ($need_ndbcluster,$need_im);
|
||||||
@ -458,7 +458,7 @@ sub main () {
|
|||||||
run_report_features();
|
run_report_features();
|
||||||
}
|
}
|
||||||
|
|
||||||
run_suite($opt_suite, $tests);
|
run_tests($tests);
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_exit(0);
|
mtr_exit(0);
|
||||||
@ -474,7 +474,6 @@ sub command_line_setup () {
|
|||||||
|
|
||||||
# These are defaults for things that are set on the command line
|
# These are defaults for things that are set on the command line
|
||||||
|
|
||||||
$opt_suite= "main"; # Special default suite
|
|
||||||
my $opt_comment;
|
my $opt_comment;
|
||||||
|
|
||||||
$opt_master_myport= 9306;
|
$opt_master_myport= 9306;
|
||||||
@ -534,7 +533,7 @@ sub command_line_setup () {
|
|||||||
'skip-slave-binlog' => \$opt_skip_slave_binlog,
|
'skip-slave-binlog' => \$opt_skip_slave_binlog,
|
||||||
'do-test=s' => \$opt_do_test,
|
'do-test=s' => \$opt_do_test,
|
||||||
'start-from=s' => \$opt_start_from,
|
'start-from=s' => \$opt_start_from,
|
||||||
'suite=s' => \$opt_suite,
|
'suite|suites=s' => \$opt_suites,
|
||||||
'skip-rpl' => \$opt_skip_rpl,
|
'skip-rpl' => \$opt_skip_rpl,
|
||||||
'skip-im' => \$opt_skip_im,
|
'skip-im' => \$opt_skip_im,
|
||||||
'skip-test=s' => \$opt_skip_test,
|
'skip-test=s' => \$opt_skip_test,
|
||||||
@ -2593,10 +2592,19 @@ sub ndbcluster_wait_started($$){
|
|||||||
sub mysqld_wait_started($){
|
sub mysqld_wait_started($){
|
||||||
my $mysqld= shift;
|
my $mysqld= shift;
|
||||||
|
|
||||||
my $res= sleep_until_file_created($mysqld->{'path_pid'},
|
if (sleep_until_file_created($mysqld->{'path_pid'},
|
||||||
$mysqld->{'start_timeout'},
|
$mysqld->{'start_timeout'},
|
||||||
$mysqld->{'pid'});
|
$mysqld->{'pid'}) == 0)
|
||||||
return $res == 0;
|
{
|
||||||
|
# Failed to wait for pid file
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get the "real pid" of the process, it will be used for killing
|
||||||
|
# the process in ActiveState's perl on windows
|
||||||
|
$mysqld->{'real_pid'}= mtr_get_pid_from_file($mysqld->{'path_pid'});
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2797,19 +2805,17 @@ sub run_benchmarks ($) {
|
|||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# Run the test suite
|
# Run the tests
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
sub run_suite () {
|
sub run_tests () {
|
||||||
my ($suite, $tests)= @_;
|
my ($tests)= @_;
|
||||||
|
|
||||||
mtr_print_thick_line();
|
mtr_print_thick_line();
|
||||||
|
|
||||||
mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
|
mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
|
||||||
|
|
||||||
mtr_report("Starting Tests in the '$suite' suite");
|
|
||||||
|
|
||||||
mtr_report_tests_not_skipped_though_disabled($tests);
|
mtr_report_tests_not_skipped_though_disabled($tests);
|
||||||
|
|
||||||
mtr_print_header();
|
mtr_print_header();
|
||||||
@ -3272,18 +3278,14 @@ sub run_testcase_check_skip_test($)
|
|||||||
sub do_before_run_mysqltest($)
|
sub do_before_run_mysqltest($)
|
||||||
{
|
{
|
||||||
my $tinfo= shift;
|
my $tinfo= shift;
|
||||||
my $tname= $tinfo->{'name'};
|
|
||||||
|
|
||||||
# Remove old files produced by mysqltest
|
# Remove old files produced by mysqltest
|
||||||
my $result_dir= "r";
|
my $base_file= mtr_match_extension($tinfo->{'result_file'},
|
||||||
if ( $opt_suite ne "main" )
|
"result"); # Trim extension
|
||||||
{
|
unlink("$base_file.reject");
|
||||||
$result_dir= "suite/$opt_suite/r";
|
unlink("$base_file.progress");
|
||||||
}
|
unlink("$base_file.log");
|
||||||
unlink("$result_dir/$tname.reject");
|
unlink("$base_file.warnings");
|
||||||
unlink("$result_dir/$tname.progress");
|
|
||||||
unlink("$result_dir/$tname.log");
|
|
||||||
unlink("$result_dir/$tname.warnings");
|
|
||||||
|
|
||||||
if (!$opt_extern)
|
if (!$opt_extern)
|
||||||
{
|
{
|
||||||
@ -3302,7 +3304,6 @@ sub do_before_run_mysqltest($)
|
|||||||
sub do_after_run_mysqltest($)
|
sub do_after_run_mysqltest($)
|
||||||
{
|
{
|
||||||
my $tinfo= shift;
|
my $tinfo= shift;
|
||||||
my $tname= $tinfo->{'name'};
|
|
||||||
|
|
||||||
# Save info from this testcase run to mysqltest.log
|
# Save info from this testcase run to mysqltest.log
|
||||||
mtr_appendfile_to_file($path_current_test_log, $path_mysqltest_log)
|
mtr_appendfile_to_file($path_current_test_log, $path_mysqltest_log)
|
||||||
@ -3626,7 +3627,7 @@ sub report_failure_and_restart ($) {
|
|||||||
my $tinfo= shift;
|
my $tinfo= shift;
|
||||||
|
|
||||||
mtr_report_test_failed($tinfo);
|
mtr_report_test_failed($tinfo);
|
||||||
mtr_show_failed_diff($tinfo->{'result_file'});
|
mtr_show_failed_diff($tinfo);
|
||||||
print "\n";
|
print "\n";
|
||||||
if ( $opt_force )
|
if ( $opt_force )
|
||||||
{
|
{
|
||||||
@ -3759,22 +3760,13 @@ sub mysqld_arguments ($$$$) {
|
|||||||
|
|
||||||
mtr_add_arg($args, "%s--no-defaults", $prefix);
|
mtr_add_arg($args, "%s--no-defaults", $prefix);
|
||||||
|
|
||||||
mtr_add_arg($args, "%s--console", $prefix);
|
|
||||||
mtr_add_arg($args, "%s--basedir=%s", $prefix, $path_my_basedir);
|
mtr_add_arg($args, "%s--basedir=%s", $prefix, $path_my_basedir);
|
||||||
mtr_add_arg($args, "%s--character-sets-dir=%s", $prefix, $path_charsetsdir);
|
mtr_add_arg($args, "%s--character-sets-dir=%s", $prefix, $path_charsetsdir);
|
||||||
|
|
||||||
if ( $mysql_version_id >= 50036)
|
if ( $mysql_version_id >= 50036)
|
||||||
{
|
{
|
||||||
# By default, prevent the started mysqld to access files outside of vardir
|
# By default, prevent the started mysqld to access files outside of vardir
|
||||||
my $secure_file_dir= $opt_vardir;
|
mtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $opt_vardir);
|
||||||
if ( $opt_suite ne "main" )
|
|
||||||
{
|
|
||||||
# When running a suite other than default allow the mysqld
|
|
||||||
# access to subdirs of mysql-test/ in order to make it possible
|
|
||||||
# to "load data" from the suites data/ directory.
|
|
||||||
$secure_file_dir= $glob_mysql_test_dir;
|
|
||||||
}
|
|
||||||
mtr_add_arg($args, "%s--secure-file-priv=%s", $prefix, $secure_file_dir);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $mysql_version_id >= 50000 )
|
if ( $mysql_version_id >= 50000 )
|
||||||
@ -4134,6 +4126,7 @@ sub stop_all_servers () {
|
|||||||
|
|
||||||
push(@kill_pids,{
|
push(@kill_pids,{
|
||||||
pid => $mysqld->{'pid'},
|
pid => $mysqld->{'pid'},
|
||||||
|
real_pid => $mysqld->{'real_pid'},
|
||||||
pidfile => $mysqld->{'path_pid'},
|
pidfile => $mysqld->{'path_pid'},
|
||||||
sockfile => $mysqld->{'path_sock'},
|
sockfile => $mysqld->{'path_sock'},
|
||||||
port => $mysqld->{'port'},
|
port => $mysqld->{'port'},
|
||||||
@ -4335,12 +4328,13 @@ sub run_testcase_stop_servers($$$) {
|
|||||||
{
|
{
|
||||||
if ( $mysqld->{'pid'} )
|
if ( $mysqld->{'pid'} )
|
||||||
{
|
{
|
||||||
$pid= mtr_mysqladmin_start($mysqld, "shutdown", 70);
|
$pid= mtr_mysqladmin_start($mysqld, "shutdown", 20);
|
||||||
|
|
||||||
$admin_pids{$pid}= 1;
|
$admin_pids{$pid}= 1;
|
||||||
|
|
||||||
push(@kill_pids,{
|
push(@kill_pids,{
|
||||||
pid => $mysqld->{'pid'},
|
pid => $mysqld->{'pid'},
|
||||||
|
real_pid => $mysqld->{'real_pid'},
|
||||||
pidfile => $mysqld->{'path_pid'},
|
pidfile => $mysqld->{'path_pid'},
|
||||||
sockfile => $mysqld->{'path_sock'},
|
sockfile => $mysqld->{'path_sock'},
|
||||||
port => $mysqld->{'port'},
|
port => $mysqld->{'port'},
|
||||||
@ -4386,12 +4380,13 @@ sub run_testcase_stop_servers($$$) {
|
|||||||
{
|
{
|
||||||
if ( $mysqld->{'pid'} )
|
if ( $mysqld->{'pid'} )
|
||||||
{
|
{
|
||||||
$pid= mtr_mysqladmin_start($mysqld, "shutdown", 70);
|
$pid= mtr_mysqladmin_start($mysqld, "shutdown", 20);
|
||||||
|
|
||||||
$admin_pids{$pid}= 1;
|
$admin_pids{$pid}= 1;
|
||||||
|
|
||||||
push(@kill_pids,{
|
push(@kill_pids,{
|
||||||
pid => $mysqld->{'pid'},
|
pid => $mysqld->{'pid'},
|
||||||
|
real_pid => $mysqld->{'real_pid'},
|
||||||
pidfile => $mysqld->{'path_pid'},
|
pidfile => $mysqld->{'path_pid'},
|
||||||
sockfile => $mysqld->{'path_sock'},
|
sockfile => $mysqld->{'path_sock'},
|
||||||
port => $mysqld->{'port'},
|
port => $mysqld->{'port'},
|
||||||
@ -4818,12 +4813,10 @@ sub run_mysqltest ($) {
|
|||||||
mtr_add_arg($args, "%s", $_) for @args_saved;
|
mtr_add_arg($args, "%s", $_) for @args_saved;
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr_add_arg($args, "--test-file");
|
mtr_add_arg($args, "--test-file=%s", $tinfo->{'path'});
|
||||||
mtr_add_arg($args, $tinfo->{'path'});
|
|
||||||
|
|
||||||
if ( defined $tinfo->{'result_file'} ) {
|
if ( defined $tinfo->{'result_file'} ) {
|
||||||
mtr_add_arg($args, "--result-file");
|
mtr_add_arg($args, "--result-file=%s", $tinfo->{'result_file'});
|
||||||
mtr_add_arg($args, $tinfo->{'result_file'});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $opt_record )
|
if ( $opt_record )
|
||||||
@ -5150,7 +5143,9 @@ Options to control what test suites or cases to run
|
|||||||
ndb-extra Run extra tests from ndb directory
|
ndb-extra Run extra tests from ndb directory
|
||||||
do-test=PREFIX Run test cases which name are prefixed with PREFIX
|
do-test=PREFIX Run test cases which name are prefixed with PREFIX
|
||||||
start-from=PREFIX Run test cases starting from test prefixed with PREFIX
|
start-from=PREFIX Run test cases starting from test prefixed with PREFIX
|
||||||
suite=NAME Run the test suite named NAME. The default is "main"
|
suite[s]=NAME1,..,NAMEN Collect tests in suites from the comma separated
|
||||||
|
list of suite names.
|
||||||
|
The default is: "$opt_suites"
|
||||||
skip-rpl Skip the replication test cases.
|
skip-rpl Skip the replication test cases.
|
||||||
skip-im Don't start IM, and skip the IM test cases
|
skip-im Don't start IM, and skip the IM test cases
|
||||||
skip-test=PREFIX Skip test cases which name are prefixed with PREFIX
|
skip-test=PREFIX Skip test cases which name are prefixed with PREFIX
|
||||||
|
@ -13,7 +13,8 @@ TimeBetweenGlobalCheckpoints= 500
|
|||||||
NoOfFragmentLogFiles= 4
|
NoOfFragmentLogFiles= 4
|
||||||
FragmentLogFileSize=12M
|
FragmentLogFileSize=12M
|
||||||
DiskPageBufferMemory= CHOOSE_DiskPageBufferMemory
|
DiskPageBufferMemory= CHOOSE_DiskPageBufferMemory
|
||||||
ODirect= 1
|
# O_DIRECT has issues on 2.4 whach have not been handled, Bug #29612
|
||||||
|
#ODirect= 1
|
||||||
# the following parametes just function as a small regression
|
# the following parametes just function as a small regression
|
||||||
# test that the parameter exists
|
# test that the parameter exists
|
||||||
InitialNoOfOpenFiles= 27
|
InitialNoOfOpenFiles= 27
|
||||||
|
19
mysql-test/r/archive-big.result
Normal file
19
mysql-test/r/archive-big.result
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE t1(a BLOB) ENGINE=ARCHIVE;
|
||||||
|
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;
|
||||||
|
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;
|
||||||
|
DROP TABLE t1;
|
@ -12675,3 +12675,10 @@ select * from t1;
|
|||||||
i
|
i
|
||||||
1
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(a longblob) engine=archive;
|
||||||
|
insert into t1 set a='';
|
||||||
|
insert into t1 set a='a';
|
||||||
|
check table t1 extended;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
drop table t1;
|
||||||
|
@ -36,7 +36,7 @@ restore table t1 from '../bogus';
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
t1 restore error Failed copying .frm file
|
t1 restore error Failed copying .frm file
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1543 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
|
Warning 1287 The syntax 'RESTORE TABLE' is deprecated and will be removed in MySQL 5.2. Please use MySQL Administrator (mysqldump, mysql) instead
|
||||||
Error 29 File 'MYSQLTEST_VARDIR/bogus/t1.frm' not found (Errcode: X)
|
Error 29 File 'MYSQLTEST_VARDIR/bogus/t1.frm' not found (Errcode: X)
|
||||||
restore table t1 from '../tmp';
|
restore table t1 from '../tmp';
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
|
@ -1,339 +0,0 @@
|
|||||||
drop table if exists t1, t2;
|
|
||||||
reset master;
|
|
||||||
create table t1 (a int) engine=innodb;
|
|
||||||
create table t2 (a int) engine=innodb;
|
|
||||||
begin;
|
|
||||||
insert t1 values (5);
|
|
||||||
commit;
|
|
||||||
begin;
|
|
||||||
insert t2 values (5);
|
|
||||||
commit;
|
|
||||||
show binlog events from <binlog_start>;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=innodb
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t2 (a int) engine=innodb
|
|
||||||
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 */
|
|
||||||
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 # Xid # # COMMIT /* XID */
|
|
||||||
drop table t1,t2;
|
|
||||||
reset master;
|
|
||||||
create table t1 (n int) engine=innodb;
|
|
||||||
begin;
|
|
||||||
commit;
|
|
||||||
drop table t1;
|
|
||||||
show binlog events in 'master-bin.000001' from 106;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t1 (n int) engine=innodb
|
|
||||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map 1 # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Xid 1 # COMMIT /* xid= */
|
|
||||||
master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
|
|
||||||
show binlog events in 'master-bin.000002' from 106;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000002 # Query 1 # use `test`; drop table t1
|
|
||||||
reset master;
|
|
||||||
create table t1 (id tinyint auto_increment primary key);
|
|
||||||
set insert_id=128;
|
|
||||||
insert into t1 values(null);
|
|
||||||
Warnings:
|
|
||||||
Warning 1264 Out of range value for column 'id' at row 1
|
|
||||||
select * from t1;
|
|
||||||
id
|
|
||||||
127
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a int);
|
|
||||||
create table if not exists t2 select * from t1;
|
|
||||||
create temporary table tt1 (a int);
|
|
||||||
create table if not exists t3 like tt1;
|
|
||||||
USE mysql;
|
|
||||||
INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test');
|
|
||||||
UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@';
|
|
||||||
DELETE FROM user WHERE host='localhost' AND user='@#@';
|
|
||||||
use test;
|
|
||||||
show binlog events from <binlog_start>;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
|
|
||||||
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`; drop table t1
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
|
||||||
master-bin.000001 # Query # # use `test`; CREATE TABLE IF NOT EXISTS `t2` (
|
|
||||||
`a` int(11) DEFAULT NULL
|
|
||||||
)
|
|
||||||
master-bin.000001 # Query # # use `test`; CREATE TABLE IF NOT EXISTS `t3` (
|
|
||||||
`a` int(11) DEFAULT NULL
|
|
||||||
)
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
|
||||||
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
|
||||||
master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
|
|
||||||
drop table t1,t2,t3,tt1;
|
|
||||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
|
||||||
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
|
|
||||||
insert delayed into t1 values (207);
|
|
||||||
insert delayed into t1 values (null);
|
|
||||||
insert delayed into t1 values (300);
|
|
||||||
show binlog events from <binlog_start>;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
|
|
||||||
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`; drop table t1
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
|
||||||
master-bin.000001 # Query # # use `test`; CREATE TABLE IF NOT EXISTS `t2` (
|
|
||||||
`a` int(11) DEFAULT NULL
|
|
||||||
)
|
|
||||||
master-bin.000001 # Query # # use `test`; CREATE TABLE IF NOT EXISTS `t3` (
|
|
||||||
`a` int(11) DEFAULT NULL
|
|
||||||
)
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
|
||||||
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
|
||||||
master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Query # # use `test`; DROP TABLE `t1`,`t2`,`t3` /* generated by server */
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
|
||||||
11 == 11
|
|
||||||
select * from t1;
|
|
||||||
a
|
|
||||||
207
|
|
||||||
208
|
|
||||||
300
|
|
||||||
301
|
|
||||||
302
|
|
||||||
303
|
|
||||||
304
|
|
||||||
305
|
|
||||||
306
|
|
||||||
400
|
|
||||||
401
|
|
||||||
drop table t1;
|
|
||||||
reset master;
|
|
||||||
drop table if exists t3;
|
|
||||||
create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb;
|
|
||||||
show master status;
|
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
|
||||||
master-bin.000001 346
|
|
||||||
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
||||||
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
||||||
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
||||||
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
||||||
show master status /* must show new binlog index after rotating */;
|
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
|
||||||
master-bin.000002 106
|
|
||||||
drop table t3;
|
|
@ -1,237 +0,0 @@
|
|||||||
create table t1 (a int, b int) engine=innodb;
|
|
||||||
begin;
|
|
||||||
insert into t1 values (1,2);
|
|
||||||
commit;
|
|
||||||
show binlog events;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 4 Format_desc 1 106 Server ver: #, Binlog ver: #
|
|
||||||
master-bin.000001 106 Query 1 213 use `test`; create table t1 (a int, b int) engine=innodb
|
|
||||||
master-bin.000001 213 Query 1 281 use `test`; BEGIN
|
|
||||||
master-bin.000001 281 Query 1 90 use `test`; insert into t1 values (1,2)
|
|
||||||
master-bin.000001 371 Xid 1 398 COMMIT /* XID */
|
|
||||||
drop table t1;
|
|
||||||
drop table if exists t1, t2;
|
|
||||||
reset master;
|
|
||||||
create table t1 (a int) engine=innodb;
|
|
||||||
create table t2 (a int) engine=innodb;
|
|
||||||
begin;
|
|
||||||
insert t1 values (5);
|
|
||||||
commit;
|
|
||||||
begin;
|
|
||||||
insert t2 values (5);
|
|
||||||
commit;
|
|
||||||
show binlog events from <binlog_start>;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (a int) engine=innodb
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t2 (a int) engine=innodb
|
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
|
||||||
master-bin.000001 # Query # # use `test`; insert t1 values (5)
|
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
master-bin.000001 # Query # # use `test`; BEGIN
|
|
||||||
master-bin.000001 # Query # # use `test`; insert t2 values (5)
|
|
||||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
|
||||||
drop table t1,t2;
|
|
||||||
reset master;
|
|
||||||
create table t1 (n int) engine=innodb;
|
|
||||||
begin;
|
|
||||||
commit;
|
|
||||||
drop table t1;
|
|
||||||
show binlog events in 'master-bin.000001' from 106;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t1 (n int) engine=innodb
|
|
||||||
master-bin.000001 # Query 1 # use `test`; BEGIN
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(100 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(99 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(98 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(97 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(96 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(95 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(94 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(93 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(92 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(91 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(90 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(89 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(88 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(87 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(86 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(85 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(84 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(83 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(82 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(81 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(80 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(79 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(78 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(77 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(76 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(75 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(74 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(73 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(72 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(71 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(70 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(69 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(68 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(67 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(66 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(65 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(64 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(63 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(62 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(61 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(60 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(59 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(58 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(57 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(56 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(55 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(54 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(53 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(52 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(51 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(50 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(49 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(48 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(47 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(46 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(45 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(44 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(43 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(42 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(41 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(40 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(39 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(38 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(37 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(36 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(35 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(34 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(33 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(32 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(31 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(30 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(29 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(28 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(27 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(26 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(25 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(24 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(23 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(22 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(21 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(20 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(19 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(18 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(17 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(16 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(15 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(14 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(13 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(12 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(11 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(10 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(9 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(8 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(7 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(6 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(5 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(4 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(3 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(2 + 4)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values(1 + 4)
|
|
||||||
master-bin.000001 # Xid 1 # COMMIT /* xid= */
|
|
||||||
master-bin.000001 # Rotate 1 # master-bin.000002;pos=4
|
|
||||||
show binlog events in 'master-bin.000002' from 106;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000002 # Query 1 # use `test`; drop table t1
|
|
||||||
reset master;
|
|
||||||
create table t1 (id tinyint auto_increment primary key);
|
|
||||||
set insert_id=128;
|
|
||||||
insert into t1 values(null);
|
|
||||||
Warnings:
|
|
||||||
Warning 1264 Out of range value for column 'id' at row 1
|
|
||||||
select * from t1;
|
|
||||||
id
|
|
||||||
127
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a int);
|
|
||||||
create table if not exists t2 select * from t1;
|
|
||||||
create temporary table tt1 (a int);
|
|
||||||
create table if not exists t3 like tt1;
|
|
||||||
USE mysql;
|
|
||||||
INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test');
|
|
||||||
UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@';
|
|
||||||
DELETE FROM user WHERE host='localhost' AND user='@#@';
|
|
||||||
use test;
|
|
||||||
show binlog events from <binlog_start>;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
|
|
||||||
master-bin.000001 # Intvar # # INSERT_ID=127
|
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values(null)
|
|
||||||
master-bin.000001 # Query # # use `test`; drop table t1
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
|
||||||
master-bin.000001 # Query # # use `test`; create table if not exists t2 select * from t1
|
|
||||||
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
|
|
||||||
master-bin.000001 # Query # # use `test`; create table if not exists t3 like tt1
|
|
||||||
master-bin.000001 # Query # # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
|
|
||||||
master-bin.000001 # Query # # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
|
|
||||||
master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
|
|
||||||
drop table t1,t2,t3,tt1;
|
|
||||||
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
|
|
||||||
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
|
|
||||||
insert delayed into t1 values (207);
|
|
||||||
insert delayed into t1 values (null);
|
|
||||||
insert delayed into t1 values (300);
|
|
||||||
show binlog events from <binlog_start>;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
|
|
||||||
master-bin.000001 # Intvar # # INSERT_ID=127
|
|
||||||
master-bin.000001 # Query # # use `test`; insert into t1 values(null)
|
|
||||||
master-bin.000001 # Query # # use `test`; drop table t1
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
|
||||||
master-bin.000001 # Query # # use `test`; create table if not exists t2 select * from t1
|
|
||||||
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
|
|
||||||
master-bin.000001 # Query # # use `test`; create table if not exists t3 like tt1
|
|
||||||
master-bin.000001 # Query # # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
|
|
||||||
master-bin.000001 # Query # # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
|
|
||||||
master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
|
|
||||||
master-bin.000001 # Query # # use `test`; drop table t1,t2,t3,tt1
|
|
||||||
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
||||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
|
||||||
11 == 11
|
|
||||||
select * from t1;
|
|
||||||
a
|
|
||||||
207
|
|
||||||
208
|
|
||||||
300
|
|
||||||
301
|
|
||||||
302
|
|
||||||
303
|
|
||||||
304
|
|
||||||
305
|
|
||||||
306
|
|
||||||
400
|
|
||||||
401
|
|
||||||
drop table t1;
|
|
||||||
reset master;
|
|
||||||
drop table if exists t3;
|
|
||||||
create table t3 (a int(11) NOT NULL AUTO_INCREMENT, b text, PRIMARY KEY (a) ) engine=innodb;
|
|
||||||
show master status;
|
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
|
||||||
master-bin.000001 346
|
|
||||||
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
||||||
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
||||||
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
||||||
insert into t3(b) values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
|
|
||||||
show master status /* must show new binlog index after rotating */;
|
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
|
||||||
master-bin.000002 106
|
|
||||||
drop table t3;
|
|
@ -403,4 +403,15 @@ hex(cast('a' as binary(2)))
|
|||||||
select hex(cast('a' as char(2) binary));
|
select hex(cast('a' as char(2) binary));
|
||||||
hex(cast('a' as char(2) binary))
|
hex(cast('a' as char(2) binary))
|
||||||
61
|
61
|
||||||
|
CREATE TABLE t1 (d1 datetime);
|
||||||
|
INSERT INTO t1(d1) VALUES ('2007-07-19 08:30:00'), (NULL),
|
||||||
|
('2007-07-19 08:34:00'), (NULL), ('2007-07-19 08:36:00');
|
||||||
|
SELECT cast(date(d1) as signed) FROM t1;
|
||||||
|
cast(date(d1) as signed)
|
||||||
|
20070719
|
||||||
|
NULL
|
||||||
|
20070719
|
||||||
|
NULL
|
||||||
|
20070719
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -1516,6 +1516,22 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c17` int(11) DEFAULT NULL
|
`c17` int(11) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
Bug #26104 Bug on foreign key class constructor
|
||||||
|
|
||||||
|
Check that ref_columns is initalized correctly in the constructor
|
||||||
|
and semantic checks in mysql_prepare_table work.
|
||||||
|
|
||||||
|
We do not need a storage engine that supports foreign keys
|
||||||
|
for this test, as the checks are purely syntax-based, and the
|
||||||
|
syntax is supported for all engines.
|
||||||
|
|
||||||
|
drop table if exists t1,t2;
|
||||||
|
create table t1(a int not null, b int not null, primary key (a, b));
|
||||||
|
create table t2(a int not null, b int not null, c int not null, primary key (a),
|
||||||
|
foreign key fk_bug26104 (b,c) references t1(a));
|
||||||
|
ERROR 42000: Incorrect foreign key definition for 'fk_bug26104': Key reference and table reference don't match
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
CREATE TABLE t1 (a int, b int);
|
CREATE TABLE t1 (a int, b int);
|
||||||
insert into t1 values (1,1),(1,2);
|
insert into t1 values (1,1),(1,2);
|
||||||
|
@ -5261,3 +5261,58 @@ CREATE TABLE `bug21328` (
|
|||||||
insert into bug21328 values (1,NULL,NULL);
|
insert into bug21328 values (1,NULL,NULL);
|
||||||
alter table bug21328 engine=myisam;
|
alter table bug21328 engine=myisam;
|
||||||
drop table bug21328;
|
drop table bug21328;
|
||||||
|
create table t1(a blob, b int) engine=csv;
|
||||||
|
insert into t1 values('a', 1);
|
||||||
|
flush tables;
|
||||||
|
update t1 set b=2;
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
a 2
|
||||||
|
drop table t1;
|
||||||
|
create table t1(a int) engine=csv;
|
||||||
|
insert into t1 values(-1), (-123.34), (2), (-23);
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
-1
|
||||||
|
-123
|
||||||
|
2
|
||||||
|
-23
|
||||||
|
check table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
drop table t1;
|
||||||
|
create table t1(a int, b int) engine=csv;
|
||||||
|
repair table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 repair Warning Data truncated for column 'a' at row 5
|
||||||
|
test.t1 repair status OK
|
||||||
|
check table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 0
|
||||||
|
-200 1
|
||||||
|
-1 -1
|
||||||
|
-1 -100
|
||||||
|
check table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
drop table t1;
|
||||||
|
create table t1(a int) engine=csv;
|
||||||
|
insert into t1 values (0), (1), (2);
|
||||||
|
delete from t1 limit 2;
|
||||||
|
check table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
delete from t1;
|
||||||
|
check table t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -603,3 +603,11 @@ 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;
|
||||||
|
create table t1 (a varchar(2) character set latin7 collate latin7_general_ci,key(a));
|
||||||
|
insert into t1 set a=0x4c20;
|
||||||
|
insert into t1 set a=0x6c;
|
||||||
|
insert into t1 set a=0x4c98;
|
||||||
|
check table t1 extended;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
drop table t1;
|
||||||
|
@ -31,7 +31,7 @@ create event e_55 on schedule at 10000101000000 do drop table t;
|
|||||||
ERROR HY000: Incorrect AT value: '10000101000000'
|
ERROR HY000: Incorrect AT value: '10000101000000'
|
||||||
create event e_55 on schedule at 20000101000000 do drop table t;
|
create event e_55 on schedule at 20000101000000 do drop table t;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
show events;
|
show events;
|
||||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||||
create event e_55 on schedule at 20200101000000 starts 10000101000000 do drop table t;
|
create event e_55 on schedule at 20200101000000 starts 10000101000000 do drop table t;
|
||||||
@ -447,32 +447,32 @@ e3 +00:00 CREATE EVENT `e3` ON SCHEDULE EVERY 1 DAY STARTS '2006-01-01 00:00:00
|
|||||||
The following should fail, and nothing should be altered.
|
The following should fail, and nothing should be altered.
|
||||||
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00';
|
ENDS '1999-01-02 00:00:00';
|
||||||
ERROR HY000: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been altered
|
ERROR HY000: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00' DISABLE;
|
ENDS '1999-01-02 00:00:00' DISABLE;
|
||||||
ERROR HY000: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been altered
|
ERROR HY000: Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
The following should give warnings, and nothing should be created.
|
The following should give warnings, and nothing should be created.
|
||||||
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00'
|
ENDS '1999-01-02 00:00:00'
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00' DISABLE
|
ENDS '1999-01-02 00:00:00' DISABLE
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DO
|
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DISABLE
|
CREATE EVENT e4 ON SCHEDULE AT '1999-01-01 00:00:00' DISABLE
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1584 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been created
|
Note 1585 Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. The event was dropped immediately after creation.
|
||||||
SHOW EVENTS;
|
SHOW EVENTS;
|
||||||
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation
|
||||||
events_test e1 root@localhost +05:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
events_test e1 root@localhost +05:00 RECURRING NULL 1 DAY 2006-01-01 00:00:00 NULL ENABLED 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
@ -482,19 +482,19 @@ The following should succeed giving a warning.
|
|||||||
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
ALTER EVENT e1 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE;
|
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1533 Event execution time is in the past. Event has been disabled
|
Note 1541 Event execution time is in the past. Event has been disabled
|
||||||
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
CREATE EVENT e4 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE
|
ENDS '1999-01-02 00:00:00' ON COMPLETION PRESERVE
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1533 Event execution time is in the past. Event has been disabled
|
Note 1541 Event execution time is in the past. Event has been disabled
|
||||||
CREATE EVENT e5 ON SCHEDULE AT '1999-01-01 00:00:00'
|
CREATE EVENT e5 ON SCHEDULE AT '1999-01-01 00:00:00'
|
||||||
ON COMPLETION PRESERVE
|
ON COMPLETION PRESERVE
|
||||||
DO
|
DO
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1533 Event execution time is in the past. Event has been disabled
|
Note 1541 Event execution time is in the past. Event has been disabled
|
||||||
The following should succeed without warnings.
|
The following should succeed without warnings.
|
||||||
ALTER EVENT e2 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00';
|
ALTER EVENT e2 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00';
|
||||||
ALTER EVENT e3 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
ALTER EVENT e3 ON SCHEDULE EVERY 1 HOUR STARTS '1999-01-01 00:00:00'
|
||||||
|
@ -63,7 +63,7 @@ begin work;
|
|||||||
insert into t1 (a) values ("OK: create event if not exists");
|
insert into t1 (a) values ("OK: create event if not exists");
|
||||||
create event if not exists e1 on schedule every 2 day do select 2;
|
create event if not exists e1 on schedule every 2 day do select 2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1526 Event 'e1' already exists
|
Note 1534 Event 'e1' already exists
|
||||||
rollback work;
|
rollback work;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a
|
a
|
||||||
|
@ -1843,6 +1843,45 @@ C3A4C3B6C3BCC39F
|
|||||||
D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD183D18E
|
D18DD184D184D0B5D0BAD182D0B8D0B2D0BDD183D18E
|
||||||
drop table federated.t1;
|
drop table federated.t1;
|
||||||
drop table federated.t1;
|
drop table federated.t1;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
DEFAULT CHARSET=utf8;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
ENGINE=FEDERATED
|
||||||
|
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1'
|
||||||
|
DEFAULT CHARSET=utf8;
|
||||||
|
insert ignore into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Larry
|
||||||
|
2 Curly
|
||||||
|
truncate federated.t1;
|
||||||
|
replace into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Moe
|
||||||
|
2 Curly
|
||||||
|
update ignore federated.t1 set a=a+1;
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Moe
|
||||||
|
3 Curly
|
||||||
|
drop table federated.t1;
|
||||||
|
drop table federated.t1;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
DEFAULT CHARSET=utf8;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
ENGINE=FEDERATED
|
||||||
|
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1'
|
||||||
|
DEFAULT CHARSET=utf8;
|
||||||
|
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe")
|
||||||
|
on duplicate key update a=a+100;
|
||||||
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Larry
|
||||||
|
2 Curly
|
||||||
|
drop table federated.t1;
|
||||||
|
drop table federated.t1;
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
DROP DATABASE IF EXISTS federated;
|
DROP DATABASE IF EXISTS federated;
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
34
mysql-test/r/federated_innodb.result
Normal file
34
mysql-test/r/federated_innodb.result
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
stop slave;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
||||||
|
CREATE DATABASE federated;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
||||||
|
CREATE DATABASE federated;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
engine=myisam;
|
||||||
|
create table federated.t1 (a int primary key, b varchar(64))
|
||||||
|
engine=federated
|
||||||
|
connection='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1';
|
||||||
|
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||||
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
1 Larry
|
||||||
|
2 Curly
|
||||||
|
truncate federated.t1;
|
||||||
|
alter table federated.t1 engine=innodb;
|
||||||
|
insert into federated.t1 values (1,"Larry"), (2,"Curly"), (1,"Moe");
|
||||||
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
|
select * from federated.t1;
|
||||||
|
a b
|
||||||
|
drop table federated.t1;
|
||||||
|
drop table federated.t1;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
||||||
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
|
DROP DATABASE IF EXISTS federated;
|
@ -476,3 +476,15 @@ ALTER TABLE t1 DISABLE KEYS;
|
|||||||
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
|
SELECT * FROM t1 WHERE MATCH(a) AGAINST('test');
|
||||||
ERROR HY000: Can't find FULLTEXT index matching the column list
|
ERROR HY000: Can't find FULLTEXT index matching the column list
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(a VARCHAR(20), FULLTEXT(a));
|
||||||
|
INSERT INTO t1 VALUES('Offside'),('City Of God');
|
||||||
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city of*' IN BOOLEAN MODE);
|
||||||
|
a
|
||||||
|
City Of God
|
||||||
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city (of*)' IN BOOLEAN MODE);
|
||||||
|
a
|
||||||
|
City Of God
|
||||||
|
SELECT a FROM t1 WHERE MATCH a AGAINST ('+city* of*' IN BOOLEAN MODE);
|
||||||
|
a
|
||||||
|
City Of God
|
||||||
|
DROP TABLE t1;
|
||||||
|
17
mysql-test/r/fulltext3.result
Normal file
17
mysql-test/r/fulltext3.result
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1(a VARCHAR(255) CHARACTER SET gbk, FULLTEXT(a));
|
||||||
|
SET NAMES utf8;
|
||||||
|
INSERT INTO t1 VALUES(0xF043616161),(0xBEF361616197C22061616161);
|
||||||
|
SELECT HEX(a) FROM t1 WHERE MATCH(a) AGAINST(0x97C22061616161 IN BOOLEAN MODE);
|
||||||
|
HEX(a)
|
||||||
|
BEF361616197C22061616161
|
||||||
|
DELETE FROM t1 LIMIT 1;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
SET NAMES latin1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(a VARCHAR(2) CHARACTER SET big5 COLLATE big5_chinese_ci,
|
||||||
|
FULLTEXT(a));
|
||||||
|
INSERT INTO t1 VALUES(0xA3C2);
|
||||||
|
DROP TABLE t1;
|
@ -816,4 +816,13 @@ LENGTH( GROUP_CONCAT( a ) )
|
|||||||
65535
|
65535
|
||||||
SET group_concat_max_len= DEFAULT;
|
SET group_concat_max_len= DEFAULT;
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
set names latin1;
|
||||||
|
create table t1 (id int, name varchar(20)) DEFAULT CHARSET=utf8;
|
||||||
|
insert into t1 (id, name) values (1, "óra");
|
||||||
|
insert into t1 (id, name) values (2, "óra");
|
||||||
|
select b.id, group_concat(b.name) from t1 a, t1 b group by b.id;
|
||||||
|
id group_concat(b.name)
|
||||||
|
1 óra,óra
|
||||||
|
2 óra,óra
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -1444,3 +1444,16 @@ OPTIMIZE TABLE t1;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 optimize status OK
|
test.t1 optimize status OK
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT, b GEOMETRY NOT NULL, SPATIAL KEY b(b));
|
||||||
|
INSERT INTO t1 VALUES (1, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)'));
|
||||||
|
INSERT INTO t1 VALUES (2, GEOMFROMTEXT('LINESTRING(1102218.456 1,2000000 2)'));
|
||||||
|
SELECT COUNT(*) FROM t1 WHERE
|
||||||
|
MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') );
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
SELECT COUNT(*) FROM t1 IGNORE INDEX (b) WHERE
|
||||||
|
MBRINTERSECTS(b, GEOMFROMTEXT('LINESTRING(1 1,1102219 2)') );
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
End of 5.0 tests.
|
||||||
|
@ -886,6 +886,9 @@ AsText(a)
|
|||||||
POINT(1 1)
|
POINT(1 1)
|
||||||
LINESTRING(0 0,1 1,2 2)
|
LINESTRING(0 0,1 1,2 2)
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
create table t1 (f1 tinyint(1), f2 char(1), f3 varchar(1), f4 geometry, f5 datetime);
|
create table t1 (f1 tinyint(1), f2 char(1), f3 varchar(1), f4 geometry, f5 datetime);
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
|
@ -457,6 +457,67 @@ a
|
|||||||
1
|
1
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`filler` char(200) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL,
|
||||||
|
KEY `a` (`a`),
|
||||||
|
KEY `b` (`b`)
|
||||||
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
|
||||||
|
insert into t1 values
|
||||||
|
(0, 'filler', 0), (1, 'filler', 1), (2, 'filler', 2), (3, 'filler', 3),
|
||||||
|
(4, 'filler', 4), (5, 'filler', 5), (6, 'filler', 6), (7, 'filler', 7),
|
||||||
|
(8, 'filler', 8), (9, 'filler', 9), (0, 'filler', 0), (1, 'filler', 1),
|
||||||
|
(2, 'filler', 2), (3, 'filler', 3), (4, 'filler', 4), (5, 'filler', 5),
|
||||||
|
(6, 'filler', 6), (7, 'filler', 7), (8, 'filler', 8), (9, 'filler', 9),
|
||||||
|
(10, 'filler', 10), (11, 'filler', 11), (12, 'filler', 12), (13, 'filler', 13),
|
||||||
|
(14, 'filler', 14), (15, 'filler', 15), (16, 'filler', 16), (17, 'filler', 17),
|
||||||
|
(18, 'filler', 18), (19, 'filler', 19), (4, '5 ', 0), (5, '4 ', 0),
|
||||||
|
(4, '4 ', 0), (4, 'qq ', 5), (5, 'qq ', 4), (4, 'zz ', 4);
|
||||||
|
create table t2(
|
||||||
|
`a` int(11) DEFAULT NULL,
|
||||||
|
`filler` char(200) DEFAULT NULL,
|
||||||
|
`b` int(11) DEFAULT NULL,
|
||||||
|
KEY USING BTREE (`a`),
|
||||||
|
KEY USING BTREE (`b`)
|
||||||
|
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
must use sort-union rather than union:
|
||||||
|
explain select * from t1 where a=4 or b=4;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index_merge a,b a,b 5,5 NULL # Using sort_union(a,b); Using where
|
||||||
|
select * from t1 where a=4 or b=4;
|
||||||
|
a filler b
|
||||||
|
4 4 0
|
||||||
|
4 5 0
|
||||||
|
4 filler 4
|
||||||
|
4 filler 4
|
||||||
|
4 qq 5
|
||||||
|
4 zz 4
|
||||||
|
5 qq 4
|
||||||
|
select * from t1 ignore index(a,b) where a=4 or b=4;
|
||||||
|
a filler b
|
||||||
|
4 4 0
|
||||||
|
4 5 0
|
||||||
|
4 filler 4
|
||||||
|
4 filler 4
|
||||||
|
4 qq 5
|
||||||
|
4 zz 4
|
||||||
|
5 qq 4
|
||||||
|
must use union, not sort-union:
|
||||||
|
explain select * from t2 where a=4 or b=4;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 index_merge a,b a,b 5,5 NULL # Using union(a,b); Using where
|
||||||
|
select * from t2 where a=4 or b=4;
|
||||||
|
a filler b
|
||||||
|
4 4 0
|
||||||
|
4 5 0
|
||||||
|
4 filler 4
|
||||||
|
4 filler 4
|
||||||
|
4 qq 5
|
||||||
|
4 zz 4
|
||||||
|
5 qq 4
|
||||||
|
drop table t1, t2;
|
||||||
#---------------- ROR-index_merge tests -----------------------
|
#---------------- ROR-index_merge tests -----------------------
|
||||||
SET SESSION STORAGE_ENGINE = MyISAM;
|
SET SESSION STORAGE_ENGINE = MyISAM;
|
||||||
drop table if exists t0,t1,t2;
|
drop table if exists t0,t1,t2;
|
||||||
|
@ -1066,7 +1066,7 @@ c int(11) YES NULL
|
|||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
alter database information_schema;
|
alter database information_schema;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
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
|
||||||
drop database information_schema;
|
drop database information_schema;
|
||||||
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
ERROR 42000: Access denied for user 'root'@'localhost' to database 'information_schema'
|
||||||
drop table information_schema.tables;
|
drop table information_schema.tables;
|
||||||
@ -1412,6 +1412,10 @@ v2 YES
|
|||||||
delete from v1;
|
delete from v1;
|
||||||
drop view v1,v2;
|
drop view v1,v2;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
alter database;
|
||||||
|
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
|
||||||
|
alter database test;
|
||||||
|
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
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
select * from information_schema.engines WHERE ENGINE="MyISAM";
|
select * from information_schema.engines WHERE ENGINE="MyISAM";
|
||||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||||
|
@ -1640,7 +1640,7 @@ t2 CREATE TABLE `t2` (
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
drop table t2;
|
drop table t2;
|
||||||
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
|
create table t2 (id int(11) not null, id2 int(11) not null, constraint t1_id_fk foreign key (id2,id) references t1 (id)) engine = innodb;
|
||||||
ERROR HY000: Can't create table 'test.t2' (errno: 150)
|
ERROR 42000: Incorrect foreign key definition for 't1_id_fk': Key reference and table reference don't match
|
||||||
create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
|
create table t2 (a int auto_increment primary key, b int, index(b), foreign key (b) references t1(id), unique(b)) engine=innodb;
|
||||||
show create table t2;
|
show create table t2;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
@ -3211,3 +3211,14 @@ t1 CREATE TABLE `t1` (
|
|||||||
CONSTRAINT `t1_t2` FOREIGN KEY (`id`) REFERENCES `t2` (`id`)
|
CONSTRAINT `t1_t2` FOREIGN KEY (`id`) REFERENCES `t2` (`id`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=349 DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB AUTO_INCREMENT=349 DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c01 CHAR(255), c02 CHAR(255), c03 CHAR(255), c04 CHAR(255),
|
||||||
|
c05 CHAR(255), c06 CHAR(255), c07 CHAR(255), c08 CHAR(255),
|
||||||
|
c09 CHAR(255), c10 CHAR(255), c11 CHAR(255), c12 CHAR(255),
|
||||||
|
c13 CHAR(255), c14 CHAR(255), c15 CHAR(255), c16 CHAR(255),
|
||||||
|
c17 CHAR(255), c18 CHAR(255), c19 CHAR(255), c20 CHAR(255),
|
||||||
|
c21 CHAR(255), c22 CHAR(255), c23 CHAR(255), c24 CHAR(255),
|
||||||
|
c25 CHAR(255), c26 CHAR(255), c27 CHAR(255), c28 CHAR(255),
|
||||||
|
c29 CHAR(255), c30 CHAR(255), c31 CHAR(255), c32 CHAR(255)
|
||||||
|
) ENGINE = InnoDB;
|
||||||
|
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
SET SESSION STORAGE_ENGINE = InnoDB;
|
SET SESSION STORAGE_ENGINE = InnoDB;
|
||||||
drop table if exists t1,t2,t1m,t1i,t2m,t2i,t4;
|
drop table if exists t1,t2,t3,t1m,t1i,t2m,t2i,t4;
|
||||||
create table t1 (
|
create table t1 (
|
||||||
c_id int(11) not null default '0',
|
c_id int(11) not null default '0',
|
||||||
org_id int(11) default null,
|
org_id int(11) default null,
|
||||||
@ -166,7 +166,6 @@ t1.a4='UNcT5pIde4I6c2SheTo4gt92OV1jgJCVkXmzyf325R1DwLURkbYHwhydANIZMbKTgdcR5xS';
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 4.1 tests
|
|
||||||
create table t1m (a int) engine = MEMORY;
|
create table t1m (a int) engine = MEMORY;
|
||||||
create table t1i (a int);
|
create table t1i (a int);
|
||||||
create table t2m (a int) engine = MEMORY;
|
create table t2m (a int) engine = MEMORY;
|
||||||
@ -362,22 +361,6 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t2 index NULL fkey 5 NULL 5 Using index
|
1 SIMPLE t2 index NULL fkey 5 NULL 5 Using index
|
||||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.fkey 1 Using where
|
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.fkey 1 Using where
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, c FLOAT, KEY b(b)) ENGINE = INNODB;
|
|
||||||
INSERT INTO t1 VALUES ( 1 , 1 , 1);
|
|
||||||
INSERT INTO t1 SELECT a + 1 , MOD(a + 1 , 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 2 , MOD(a + 2 , 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 4 , MOD(a + 4 , 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 8 , MOD(a + 8 , 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 16, MOD(a + 16, 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 32, MOD(a + 32, 20), 1 FROM t1;
|
|
||||||
INSERT INTO t1 SELECT a + 64, MOD(a + 64, 20), 1 FROM t1;
|
|
||||||
EXPLAIN SELECT b, SUM(c) FROM t1 GROUP BY b;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 index NULL b 5 NULL 128
|
|
||||||
EXPLAIN SELECT SQL_BIG_RESULT b, SUM(c) FROM t1 GROUP BY b;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using filesort
|
|
||||||
DROP TABLE t1;
|
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
id int NOT NULL,
|
id int NOT NULL,
|
||||||
name varchar(20) NOT NULL,
|
name varchar(20) NOT NULL,
|
||||||
@ -503,33 +486,6 @@ a
|
|||||||
2
|
2
|
||||||
5
|
5
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set @save_qcache_size=@@global.query_cache_size;
|
|
||||||
set @save_qcache_type=@@global.query_cache_type;
|
|
||||||
set global query_cache_size=10*1024*1024;
|
|
||||||
set global query_cache_type=1;
|
|
||||||
drop table if exists `test`;
|
|
||||||
Warnings:
|
|
||||||
Note 1051 Unknown table 'test'
|
|
||||||
CREATE TABLE `test` (`test1` varchar(3) NOT NULL,
|
|
||||||
`test2` varchar(4) NOT NULL,PRIMARY KEY (`test1`))
|
|
||||||
ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
|
||||||
INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '5678');
|
|
||||||
select * from test;
|
|
||||||
test1 test2
|
|
||||||
tes 5678
|
|
||||||
INSERT INTO `test` (`test1`, `test2`) VALUES ('tes', '1234')
|
|
||||||
ON DUPLICATE KEY UPDATE `test2` = '1234';
|
|
||||||
select * from test;
|
|
||||||
test1 test2
|
|
||||||
tes 1234
|
|
||||||
flush tables;
|
|
||||||
select * from test;
|
|
||||||
test1 test2
|
|
||||||
tes 1234
|
|
||||||
drop table test;
|
|
||||||
set global query_cache_type=@save_qcache_type;
|
|
||||||
set global query_cache_size=@save_qcache_size;
|
|
||||||
End of 5.0 tests
|
|
||||||
create table t1(
|
create table t1(
|
||||||
id int auto_increment,
|
id int auto_increment,
|
||||||
c char(1) not null,
|
c char(1) not null,
|
||||||
@ -665,6 +621,14 @@ UPDATE t3 SET a = 'us' WHERE a = 'uk';
|
|||||||
SELECT * FROM t3 WHERE a = 'uk';
|
SELECT * FROM t3 WHERE a = 'uk';
|
||||||
a
|
a
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
select * from bug29807;
|
||||||
|
ERROR 42S02: Table 'test.bug29807' doesn't exist
|
||||||
|
drop table t1;
|
||||||
|
drop table bug29807;
|
||||||
|
ERROR 42S02: Unknown table 'bug29807'
|
||||||
|
create table bug29807 (a int);
|
||||||
|
drop table bug29807;
|
||||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t2 (a INT) ENGINE=InnoDB;
|
||||||
switch to connection c1
|
switch to connection c1
|
||||||
@ -680,7 +644,57 @@ INSERT INTO t1 VALUES (1);
|
|||||||
switch to connection default
|
switch to connection default
|
||||||
SET AUTOCOMMIT=default;
|
SET AUTOCOMMIT=default;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
End of 5.0 tests
|
CREATE TABLE t1 (
|
||||||
|
id int NOT NULL auto_increment PRIMARY KEY,
|
||||||
|
b int NOT NULL,
|
||||||
|
c datetime NOT NULL,
|
||||||
|
INDEX idx_b(b),
|
||||||
|
INDEX idx_c(c)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
b int NOT NULL auto_increment PRIMARY KEY,
|
||||||
|
c datetime NOT NULL
|
||||||
|
) ENGINE= MyISAM;
|
||||||
|
INSERT INTO t2(c) VALUES ('2007-01-01');
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t2(c) SELECT c FROM t2;
|
||||||
|
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||||
|
UPDATE t2 SET c='2007-01-02';
|
||||||
|
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||||
|
UPDATE t2 SET c='2007-01-03';
|
||||||
|
INSERT INTO t1(b,c) SELECT b,c FROM t2;
|
||||||
|
set @@sort_buffer_size=8192;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
3072
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM t1
|
||||||
|
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL idx_b,idx_c NULL NULL NULL # Using where
|
||||||
|
SELECT COUNT(*) FROM t1
|
||||||
|
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||||
|
COUNT(*)
|
||||||
|
3072
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
||||||
|
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index_merge idx_b,idx_c idx_c,idx_b 8,4 NULL # Using sort_union(idx_c,idx_b); Using where
|
||||||
|
SELECT COUNT(*) FROM t1 FORCE INDEX(idx_b, idx_c)
|
||||||
|
WHERE (c >= '2007-01-02' AND c <= '2007-01-03') OR b >= 1;
|
||||||
|
COUNT(*)
|
||||||
|
3072
|
||||||
|
set @@sort_buffer_size=default;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (a int, b int);
|
CREATE TABLE t1 (a int, b int);
|
||||||
insert into t1 values (1,1),(1,2);
|
insert into t1 values (1,1),(1,2);
|
||||||
CREATE TABLE t2 (primary key (a)) select * from t1;
|
CREATE TABLE t2 (primary key (a)) select * from t1;
|
||||||
@ -796,6 +810,10 @@ a
|
|||||||
2
|
2
|
||||||
5
|
5
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (a int) engine=innodb;
|
||||||
|
alter table t1 alter a set default 1;
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
CREATE TABLE `t2` (
|
CREATE TABLE `t2` (
|
||||||
`k` int(11) NOT NULL auto_increment,
|
`k` int(11) NOT NULL auto_increment,
|
||||||
@ -900,4 +918,32 @@ NULL
|
|||||||
1
|
1
|
||||||
Two
|
Two
|
||||||
drop tables t1;
|
drop tables t1;
|
||||||
|
create table t1(f1 varchar(5) unique, f2 timestamp NOT NULL DEFAULT
|
||||||
|
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
|
||||||
|
insert into t1(f1) values(1);
|
||||||
|
select @a:=f2 from t1;
|
||||||
|
@a:=f2
|
||||||
|
#
|
||||||
|
update t1 set f1=1;
|
||||||
|
select @b:=f2 from t1;
|
||||||
|
@b:=f2
|
||||||
|
#
|
||||||
|
select if(@a=@b,"ok","wrong");
|
||||||
|
if(@a=@b,"ok","wrong")
|
||||||
|
ok
|
||||||
|
insert into t1(f1) values (1) on duplicate key update f1="1";
|
||||||
|
select @b:=f2 from t1;
|
||||||
|
@b:=f2
|
||||||
|
#
|
||||||
|
select if(@a=@b,"ok","wrong");
|
||||||
|
if(@a=@b,"ok","wrong")
|
||||||
|
ok
|
||||||
|
insert into t1(f1) select f1 from t1 on duplicate key update f1="1";
|
||||||
|
select @b:=f2 from t1;
|
||||||
|
@b:=f2
|
||||||
|
#
|
||||||
|
select if(@a=@b,"ok","wrong");
|
||||||
|
if(@a=@b,"ok","wrong")
|
||||||
|
ok
|
||||||
|
drop table t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
1
mysql-test/r/innodb_trx_weight.result
Normal file
1
mysql-test/r/innodb_trx_weight.result
Normal file
@ -0,0 +1 @@
|
|||||||
|
SET storage_engine=InnoDB;
|
@ -1632,4 +1632,115 @@ INSERT INTO t3 VALUES (1,1);
|
|||||||
SELECT * FROM t1 JOIN (t2 JOIN t3 USING (b)) USING (a);
|
SELECT * FROM t1 JOIN (t2 JOIN t3 USING (b)) USING (a);
|
||||||
ERROR 23000: Column 'a' in from clause is ambiguous
|
ERROR 23000: Column 'a' in from clause is ambiguous
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
carrier char(2) default NULL,
|
||||||
|
id int NOT NULL auto_increment PRIMARY KEY
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
('CO',235371754),('CO',235376554),('CO',235376884),('CO',235377874),
|
||||||
|
('CO',231060394),('CO',231059224),('CO',231059314),('CO',231060484),
|
||||||
|
('CO',231060274),('CO',231060124),('CO',231060244),('CO',231058594),
|
||||||
|
('CO',231058924),('CO',231058504),('CO',231059344),('CO',231060424),
|
||||||
|
('CO',231059554),('CO',231060304),('CO',231059644),('CO',231059464),
|
||||||
|
('CO',231059764),('CO',231058294),('CO',231058624),('CO',231058864),
|
||||||
|
('CO',231059374),('CO',231059584),('CO',231059734),('CO',231059014),
|
||||||
|
('CO',231059854),('CO',231059494),('CO',231059794),('CO',231058534),
|
||||||
|
('CO',231058324),('CO',231058684),('CO',231059524),('CO',231059974);
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
scan_date date default NULL,
|
||||||
|
package_id int default NULL,
|
||||||
|
INDEX scan_date(scan_date),
|
||||||
|
INDEX package_id(package_id)
|
||||||
|
);
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
('2008-12-29',231062944),('2008-12-29',231065764),('2008-12-29',231066124),
|
||||||
|
('2008-12-29',231060094),('2008-12-29',231061054),('2008-12-29',231065644),
|
||||||
|
('2008-12-29',231064384),('2008-12-29',231064444),('2008-12-29',231073774),
|
||||||
|
('2008-12-29',231058594),('2008-12-29',231059374),('2008-12-29',231066004),
|
||||||
|
('2008-12-29',231068494),('2008-12-29',231070174),('2008-12-29',231071884),
|
||||||
|
('2008-12-29',231063274),('2008-12-29',231063754),('2008-12-29',231064144),
|
||||||
|
('2008-12-29',231069424),('2008-12-29',231073714),('2008-12-29',231058414),
|
||||||
|
('2008-12-29',231060994),('2008-12-29',231069154),('2008-12-29',231068614),
|
||||||
|
('2008-12-29',231071464),('2008-12-29',231074014),('2008-12-29',231059614),
|
||||||
|
('2008-12-29',231059074),('2008-12-29',231059464),('2008-12-29',231069094),
|
||||||
|
('2008-12-29',231067294),('2008-12-29',231070144),('2008-12-29',231073804),
|
||||||
|
('2008-12-29',231072634),('2008-12-29',231058294),('2008-12-29',231065344),
|
||||||
|
('2008-12-29',231066094),('2008-12-29',231069034),('2008-12-29',231058594),
|
||||||
|
('2008-12-29',231059854),('2008-12-29',231059884),('2008-12-29',231059914),
|
||||||
|
('2008-12-29',231063664),('2008-12-29',231063814),('2008-12-29',231063904);
|
||||||
|
CREATE TABLE t3 (
|
||||||
|
package_id int default NULL,
|
||||||
|
INDEX package_id(package_id)
|
||||||
|
);
|
||||||
|
INSERT INTO t3 VALUES
|
||||||
|
(231058294),(231058324),(231058354),(231058384),(231058414),(231058444),
|
||||||
|
(231058474),(231058504),(231058534),(231058564),(231058594),(231058624),
|
||||||
|
(231058684),(231058744),(231058804),(231058864),(231058924),(231058954),
|
||||||
|
(231059014),(231059074),(231059104),(231059134),(231059164),(231059194),
|
||||||
|
(231059224),(231059254),(231059284),(231059314),(231059344),(231059374),
|
||||||
|
(231059404),(231059434),(231059464),(231059494),(231059524),(231059554),
|
||||||
|
(231059584),(231059614),(231059644),(231059674),(231059704),(231059734),
|
||||||
|
(231059764),(231059794),(231059824),(231059854),(231059884),(231059914),
|
||||||
|
(231059944),(231059974),(231060004),(231060034),(231060064),(231060094),
|
||||||
|
(231060124),(231060154),(231060184),(231060214),(231060244),(231060274),
|
||||||
|
(231060304),(231060334),(231060364),(231060394),(231060424),(231060454),
|
||||||
|
(231060484),(231060514),(231060544),(231060574),(231060604),(231060634),
|
||||||
|
(231060664),(231060694),(231060724),(231060754),(231060784),(231060814),
|
||||||
|
(231060844),(231060874),(231060904),(231060934),(231060964),(231060994),
|
||||||
|
(231061024),(231061054),(231061084),(231061144),(231061174),(231061204),
|
||||||
|
(231061234),(231061294),(231061354),(231061384),(231061414),(231061474),
|
||||||
|
(231061564),(231061594),(231061624),(231061684),(231061714),(231061774),
|
||||||
|
(231061804),(231061894),(231061984),(231062074),(231062134),(231062224),
|
||||||
|
(231062254),(231062314),(231062374),(231062434),(231062494),(231062554),
|
||||||
|
(231062584),(231062614),(231062644),(231062704),(231062734),(231062794),
|
||||||
|
(231062854),(231062884),(231062944),(231063004),(231063034),(231063064),
|
||||||
|
(231063124),(231063154),(231063184),(231063214),(231063274),(231063334),
|
||||||
|
(231063394),(231063424),(231063454),(231063514),(231063574),(231063664);
|
||||||
|
CREATE TABLE t4 (
|
||||||
|
carrier char(2) NOT NULL default '' PRIMARY KEY,
|
||||||
|
id int(11) default NULL,
|
||||||
|
INDEX id(id)
|
||||||
|
);
|
||||||
|
INSERT INTO t4 VALUES
|
||||||
|
('99',6),('SK',456),('UA',486),('AI',1081),('OS',1111),('VS',1510);
|
||||||
|
CREATE TABLE t5 (
|
||||||
|
carrier_id int default NULL,
|
||||||
|
INDEX carrier_id(carrier_id)
|
||||||
|
);
|
||||||
|
INSERT INTO t5 VALUES
|
||||||
|
(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
|
||||||
|
(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
|
||||||
|
(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
|
||||||
|
(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
|
||||||
|
(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
|
||||||
|
(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(456),(456),(456),
|
||||||
|
(456),(456),(456),(456),(456),(456),(456),(456),(456),(456),(456),(456),
|
||||||
|
(456),(486),(1081),(1111),(1111),(1111),(1111),(1510);
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM((t2 JOIN t1 ON t2.package_id = t1.id)
|
||||||
|
JOIN t3 ON t3.package_id = t1.id);
|
||||||
|
COUNT(*)
|
||||||
|
6
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM ((t2 JOIN t1 ON t2.package_id = t1.id)
|
||||||
|
JOIN t3 ON t3.package_id = t1.id)
|
||||||
|
LEFT JOIN
|
||||||
|
(t5 JOIN t4 ON t5.carrier_id = t4.id)
|
||||||
|
ON t4.carrier = t1.carrier;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 index package_id package_id 5 NULL 45 Using index
|
||||||
|
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.package_id 1
|
||||||
|
1 SIMPLE t4 eq_ref PRIMARY,id PRIMARY 2 test.t1.carrier 1
|
||||||
|
1 SIMPLE t5 ref carrier_id carrier_id 5 test.t4.id 22 Using index
|
||||||
|
1 SIMPLE t3 ref package_id package_id 5 test.t1.id 1 Using where; Using index
|
||||||
|
SELECT COUNT(*)
|
||||||
|
FROM ((t2 JOIN t1 ON t2.package_id = t1.id)
|
||||||
|
JOIN t3 ON t3.package_id = t1.id)
|
||||||
|
LEFT JOIN
|
||||||
|
(t5 JOIN t4 ON t5.carrier_id = t4.id)
|
||||||
|
ON t4.carrier = t1.carrier;
|
||||||
|
COUNT(*)
|
||||||
|
6
|
||||||
|
DROP TABLE t1,t2,t3,t4,t5;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -86,6 +86,60 @@ field1 field2
|
|||||||
a"b cd"ef
|
a"b cd"ef
|
||||||
a"b c"d"e
|
a"b c"d"e
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c1 VARCHAR(255)
|
||||||
|
);
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
id INT,
|
||||||
|
c2 VARCHAR(255)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 (c1) VALUES
|
||||||
|
('r'), ('rr'), ('rrr'), ('rrrr'),
|
||||||
|
('.r'), ('.rr'), ('.rrr'), ('.rrrr'),
|
||||||
|
('r.'), ('rr.'), ('rrr.'), ('rrrr.'),
|
||||||
|
('.r.'), ('.rr.'), ('.rrr.'), ('.rrrr.');
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id c1
|
||||||
|
1 r
|
||||||
|
2 rr
|
||||||
|
3 rrr
|
||||||
|
4 rrrr
|
||||||
|
5 .r
|
||||||
|
6 .rr
|
||||||
|
7 .rrr
|
||||||
|
8 .rrrr
|
||||||
|
9 r.
|
||||||
|
10 rr.
|
||||||
|
11 rrr.
|
||||||
|
12 rrrr.
|
||||||
|
13 .r.
|
||||||
|
14 .rr.
|
||||||
|
15 .rrr.
|
||||||
|
16 .rrrr.
|
||||||
|
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY 'r' FROM t1;
|
||||||
|
r1r rrrr
|
||||||
|
r2r rrrrrr
|
||||||
|
r3r rrrrrrrr
|
||||||
|
r4r rrrrrrrrrr
|
||||||
|
r5r r.rrr
|
||||||
|
r6r r.rrrrr
|
||||||
|
r7r r.rrrrrrr
|
||||||
|
r8r r.rrrrrrrrr
|
||||||
|
r9r rrr.r
|
||||||
|
r10r rrrrr.r
|
||||||
|
r11r rrrrrrr.r
|
||||||
|
r12r rrrrrrrrr.r
|
||||||
|
r13r r.rr.r
|
||||||
|
r14r r.rrrr.r
|
||||||
|
r15r r.rrrrrr.r
|
||||||
|
r16r r.rrrrrrrr.r
|
||||||
|
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t2 FIELDS ENCLOSED BY 'r';
|
||||||
|
SELECT t1.id, c1, c2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE c1 != c2;
|
||||||
|
id c1 c2
|
||||||
|
SELECT t1.id, c1, c2 FROM t1 RIGHT JOIN t2 ON t1.id=t2.id WHERE c1 != c2;
|
||||||
|
id c1 c2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
create table t1 (a int default 100, b int, c varchar(60));
|
create table t1 (a int default 100, b int, c varchar(60));
|
||||||
load data infile '../std_data_ln/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=concat("b=",@b);
|
load data infile '../std_data_ln/rpl_loaddata.dat' into table t1 (a, @b) set b=@b+10, c=concat("b=",@b);
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -193,6 +247,20 @@ f1
|
|||||||
1
|
1
|
||||||
2
|
2
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (c1 INT, c2 TIMESTAMP, c3 REAL, c4 DOUBLE);
|
||||||
|
INSERT INTO t1 (c1, c2, c3, c4) VALUES (10, '1970-02-01 01:02:03', 1.1E-100, 1.1E+100);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 c3 c4
|
||||||
|
10 1970-02-01 01:02:03 1.1e-100 1.1e+100
|
||||||
|
SELECT * INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/t1' FIELDS ENCLOSED BY '-' FROM t1;
|
||||||
|
-10- -1970\-02\-01 01:02:03- -1.1e\-100- -1.1e+100-
|
||||||
|
EOF
|
||||||
|
TRUNCATE t1;
|
||||||
|
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/t1' INTO TABLE t1 FIELDS ENCLOSED BY '-';
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2 c3 c4
|
||||||
|
10 1970-02-01 01:02:03 1.1e-100 1.1e+100
|
||||||
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
INSERT INTO t1 VALUES (1);
|
INSERT INTO t1 VALUES (1);
|
||||||
SET NAMES latin1;
|
SET NAMES latin1;
|
||||||
|
@ -131,7 +131,7 @@ set global general_log=ON;
|
|||||||
set global log_output=default;
|
set global log_output=default;
|
||||||
show variables like 'log_output';
|
show variables like 'log_output';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
log_output TABLE
|
log_output FILE
|
||||||
set global general_log=OFF;
|
set global general_log=OFF;
|
||||||
set global log_output=FILE;
|
set global log_output=FILE;
|
||||||
truncate table mysql.general_log;
|
truncate table mysql.general_log;
|
||||||
|
@ -1890,7 +1890,7 @@ DROP TABLE IF EXISTS `v2`;
|
|||||||
/*!50001 CREATE TABLE `v2` (
|
/*!50001 CREATE TABLE `v2` (
|
||||||
`a` varchar(30)
|
`a` varchar(30)
|
||||||
) */;
|
) */;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
/*!50001 DROP TABLE `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -1981,7 +1981,7 @@ DROP TABLE IF EXISTS `v1`;
|
|||||||
/*!50001 CREATE TABLE `v1` (
|
/*!50001 CREATE TABLE `v1` (
|
||||||
`a` int(11)
|
`a` int(11)
|
||||||
) */;
|
) */;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
/*!50001 DROP TABLE `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -2049,7 +2049,7 @@ DROP TABLE IF EXISTS `v2`;
|
|||||||
/*!50001 CREATE TABLE `v2` (
|
/*!50001 CREATE TABLE `v2` (
|
||||||
`a` varchar(30)
|
`a` varchar(30)
|
||||||
) */;
|
) */;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
/*!50001 DROP TABLE `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -2168,7 +2168,7 @@ DROP TABLE IF EXISTS `v3`;
|
|||||||
`b` int(11),
|
`b` int(11),
|
||||||
`c` varchar(30)
|
`c` varchar(30)
|
||||||
) */;
|
) */;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
/*!50001 DROP TABLE `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -2182,7 +2182,7 @@ DROP TABLE IF EXISTS `v3`;
|
|||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
/*!50001 DROP TABLE `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -2196,7 +2196,7 @@ DROP TABLE IF EXISTS `v3`;
|
|||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v3`*/;
|
/*!50001 DROP TABLE `v3`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v3`*/;
|
/*!50001 DROP VIEW IF EXISTS `v3`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -2888,7 +2888,7 @@ DROP TABLE IF EXISTS `v2`;
|
|||||||
) */;
|
) */;
|
||||||
|
|
||||||
USE `test`;
|
USE `test`;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v0`*/;
|
/*!50001 DROP TABLE `v0`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v0`*/;
|
/*!50001 DROP VIEW IF EXISTS `v0`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -2902,7 +2902,7 @@ USE `test`;
|
|||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
/*!50001 DROP TABLE `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -2916,7 +2916,7 @@ USE `test`;
|
|||||||
/*!50001 SET character_set_client = @saved_cs_client */;
|
/*!50001 SET character_set_client = @saved_cs_client */;
|
||||||
/*!50001 SET character_set_results = @saved_cs_results */;
|
/*!50001 SET character_set_results = @saved_cs_results */;
|
||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v2`*/;
|
/*!50001 DROP TABLE `v2`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
/*!50001 DROP VIEW IF EXISTS `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -3145,6 +3145,7 @@ insert into t values(5, 51);
|
|||||||
create view v1 as select qty, price, qty*price as value from t;
|
create view v1 as select qty, price, qty*price as value from t;
|
||||||
create view v2 as select qty from v1;
|
create view v2 as select qty from v1;
|
||||||
mysqldump {
|
mysqldump {
|
||||||
|
/*!50001 DROP TABLE `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
@ -3159,6 +3160,7 @@ mysqldump {
|
|||||||
/*!50001 SET collation_connection = @saved_col_connection */;
|
/*!50001 SET collation_connection = @saved_col_connection */;
|
||||||
|
|
||||||
} mysqldump {
|
} mysqldump {
|
||||||
|
/*!50001 DROP TABLE `v2`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
@ -3251,7 +3253,7 @@ DROP TABLE IF EXISTS `v1`;
|
|||||||
) */;
|
) */;
|
||||||
|
|
||||||
USE `mysqldump_test_db`;
|
USE `mysqldump_test_db`;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
/*!50001 DROP TABLE `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
@ -3307,6 +3309,7 @@ USE `mysqldump_views`;
|
|||||||
USE `mysqldump_tables`;
|
USE `mysqldump_tables`;
|
||||||
|
|
||||||
USE `mysqldump_views`;
|
USE `mysqldump_views`;
|
||||||
|
/*!50001 DROP TABLE `nasishnasifu`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
/*!50001 SET @saved_col_connection = @@collation_connection */;
|
||||||
@ -3441,7 +3444,7 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
CREATE TABLE t1(a int);
|
CREATE TABLE t1(a int);
|
||||||
INSERT INTO t1 VALUES (1), (2);
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
mysqldump: Input filename or options too long: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
mysqldump: Input filename too long: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t2 (a int);
|
CREATE TABLE t2 (a int);
|
||||||
CREATE TABLE t3 (a int);
|
CREATE TABLE t3 (a int);
|
||||||
@ -3560,6 +3563,16 @@ CREATE TABLE `t1` (
|
|||||||
INSERT INTO `t1` VALUES (11,0x7171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171);
|
INSERT INTO `t1` VALUES (11,0x7171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171);
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# Bug #28524: mysqldump --skip-add-drop-table is not
|
||||||
|
# compatible with views
|
||||||
|
#
|
||||||
|
CREATE VIEW v1 AS SELECT 1;
|
||||||
|
DROP VIEW v1;
|
||||||
|
SELECT * FROM v1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DROP VIEW v1;
|
||||||
|
#
|
||||||
# End of 5.0 tests
|
# End of 5.0 tests
|
||||||
#
|
#
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
@ -3862,7 +3875,7 @@ DROP TABLE IF EXISTS `v1`;
|
|||||||
) */;
|
) */;
|
||||||
|
|
||||||
USE `mysqldump_test_db`;
|
USE `mysqldump_test_db`;
|
||||||
/*!50001 DROP TABLE IF EXISTS `v1`*/;
|
/*!50001 DROP TABLE `v1`*/;
|
||||||
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
/*!50001 DROP VIEW IF EXISTS `v1`*/;
|
||||||
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
/*!50001 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
/*!50001 SET @saved_cs_results = @@character_set_results */;
|
||||||
|
@ -420,7 +420,7 @@ mysqltest: At line 1: query 'connect con2,localhost,root,,illegal_db' failed: 1
|
|||||||
mysqltest: At line 1: Illegal argument for port: 'illegal_port'
|
mysqltest: At line 1: Illegal argument for port: 'illegal_port'
|
||||||
mysqltest: At line 1: Illegal option to connect: SMTP
|
mysqltest: At line 1: Illegal option to connect: SMTP
|
||||||
OK
|
OK
|
||||||
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 7: Connection limit exhausted, you can have max 128 connections
|
mysqltest: The test didn't produce any output
|
||||||
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool
|
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool
|
||||||
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists
|
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists
|
||||||
connect(localhost,root,,test,MASTER_PORT,MASTER_SOCKET);
|
connect(localhost,root,,test,MASTER_PORT,MASTER_SOCKET);
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
DROP TABLE IF EXISTS t1;
|
|
||||||
CREATE TABLE t1 (
|
|
||||||
pk1 INT NOT NULL PRIMARY KEY,
|
|
||||||
b INT NOT NULL,
|
|
||||||
c INT NOT NULL UNIQUE
|
|
||||||
) ENGINE=ndbcluster;
|
|
||||||
INSERT INTO t1 VALUES (0, 1, 0),(1,2,1),(2,3,2);
|
|
||||||
UPDATE t1 set b = c;
|
|
||||||
select * from t1 order by pk1;
|
|
||||||
pk1 b c
|
|
||||||
0 0 0
|
|
||||||
1 1 1
|
|
||||||
2 2 2
|
|
||||||
UPDATE t1 set pk1 = 4 where pk1 = 1;
|
|
||||||
select * from t1 order by pk1;
|
|
||||||
pk1 b c
|
|
||||||
0 0 0
|
|
||||||
2 2 2
|
|
||||||
4 1 1
|
|
||||||
UPDATE t1 set pk1 = 4 where pk1 = 2;
|
|
||||||
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
|
|
||||||
UPDATE IGNORE t1 set pk1 = 4 where pk1 = 2;
|
|
||||||
select * from t1 order by pk1;
|
|
||||||
pk1 b c
|
|
||||||
0 0 0
|
|
||||||
2 2 2
|
|
||||||
4 1 1
|
|
||||||
UPDATE t1 set pk1 = 1, c = 2 where pk1 = 4;
|
|
||||||
ERROR 23000: Duplicate entry '' for key '*UNKNOWN*'
|
|
||||||
UPDATE IGNORE t1 set pk1 = 1, c = 2 where pk1 = 4;
|
|
||||||
select * from t1 order by pk1;
|
|
||||||
pk1 b c
|
|
||||||
0 0 0
|
|
||||||
2 2 2
|
|
||||||
4 1 1
|
|
||||||
UPDATE t1 set pk1 = pk1 + 10;
|
|
||||||
select * from t1 order by pk1;
|
|
||||||
pk1 b c
|
|
||||||
10 0 0
|
|
||||||
12 2 2
|
|
||||||
14 1 1
|
|
||||||
DROP TABLE IF EXISTS t1;
|
|
@ -1267,14 +1267,4 @@ ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time))
|
|||||||
ERROR HY000: Incorrect usage of PARTITION and log table
|
ERROR HY000: Incorrect usage of PARTITION and log table
|
||||||
ALTER TABLE general_log ENGINE = CSV;
|
ALTER TABLE general_log ENGINE = CSV;
|
||||||
SET GLOBAL general_log = default;
|
SET GLOBAL general_log = default;
|
||||||
CREATE TABLE `t1` ( `a` varchar(1)) ENGINE=MyISAM
|
|
||||||
PARTITION BY LIST (CASE a WHEN 'a' THEN 1
|
|
||||||
WHEN 'b' THEN 2
|
|
||||||
WHEN 'c' THEN 3
|
|
||||||
END) (
|
|
||||||
PARTITION a VALUES IN (1),
|
|
||||||
PARTITION b VALUES IN (2),
|
|
||||||
PARTITION c VALUES IN (3)
|
|
||||||
);
|
|
||||||
DROP TABLE t1;
|
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
173
mysql-test/r/partition_bug18198.result
Normal file
173
mysql-test/r/partition_bug18198.result
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (col1 datetime)
|
||||||
|
partition by range(datediff(col1,col1))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(greatest(col1,10))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(isnull(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(least(col1,12))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(case when col1>0 then 10 else 20 end)
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(ifnull(col1,5))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(nullif(col1,5))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(bit_length(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(bit_length(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(char_length(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(char_length(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(character_length(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(find_in_set(col1,1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(find_in_set(col1,'1'))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(instr(col1,3))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(instr(col1,'3'))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(length(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(locate(1,col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(locate(1,col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(octet_length(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(position(1 in col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(position(1 in col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 char(5))
|
||||||
|
partition by range(strcmp(col1,2))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(strcmp(col1,2))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(crc32(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(round(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(sign(col1))
|
||||||
|
(partition p0 values less than (2), partition p1 values less than (6));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 datetime)
|
||||||
|
partition by range(period_add(col1,5))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 datetime, col2 datetime)
|
||||||
|
partition by range(period_diff(col1,col2))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int, col2 int)
|
||||||
|
partition by range(period_diff(col1,col2))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 datetime)
|
||||||
|
partition by range(timestampdiff(day,5,col1))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 date)
|
||||||
|
partition by range(unix_timestamp(col1))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 datetime)
|
||||||
|
partition by range(week(col1))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 varchar(25))
|
||||||
|
partition by range(cast(col1 as signed))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 varchar(25))
|
||||||
|
partition by range(convert(col1,unsigned))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(col1 | 20)
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(col1 & 20)
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(col1 ^ 20)
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(col1 << 20)
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(col1 >> 20)
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(~col1)
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(bit_count(col1))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
create table t1 (col1 int)
|
||||||
|
partition by range(inet_aton(col1))
|
||||||
|
(partition p0 values less than (10), partition p1 values less than (30));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
@ -16,3 +16,7 @@ s1
|
|||||||
1
|
1
|
||||||
3
|
3
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a varchar(1), primary key (a))
|
||||||
|
partition by list (ascii(a))
|
||||||
|
(partition p1 values in (65));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
@ -25,7 +25,7 @@ partitions 3
|
|||||||
(partition x1 values in (1,2,9,4) tablespace ts1,
|
(partition x1 values in (1,2,9,4) tablespace ts1,
|
||||||
partition x2 values in (3, 11, 5, 7) tablespace ts2,
|
partition x2 values in (3, 11, 5, 7) tablespace ts2,
|
||||||
partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
|
partition x3 values in (16, 8, 5+19, 70-43) tablespace ts3);
|
||||||
ERROR HY000: The PARTITION function returns the wrong type
|
ERROR HY000: This partition function is not allowed
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int not null,
|
a int not null,
|
||||||
b int not null,
|
b int not null,
|
||||||
@ -89,7 +89,7 @@ partitions 3
|
|||||||
(partition x1 tablespace ts1,
|
(partition x1 tablespace ts1,
|
||||||
partition x2 tablespace ts2,
|
partition x2 tablespace ts2,
|
||||||
partition x3 tablespace ts3);
|
partition x3 tablespace ts3);
|
||||||
ERROR HY000: The PARTITION function returns the wrong type
|
ERROR HY000: This partition function is not allowed
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int not null,
|
a int not null,
|
||||||
b int not null,
|
b int not null,
|
||||||
@ -422,7 +422,7 @@ partition by range (sin(a))
|
|||||||
partitions 2
|
partitions 2
|
||||||
(partition x1 values less than (4),
|
(partition x1 values less than (4),
|
||||||
partition x2 values less than (5));
|
partition x2 values less than (5));
|
||||||
ERROR HY000: The PARTITION function returns the wrong type
|
ERROR HY000: This partition function is not allowed
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int not null,
|
a int not null,
|
||||||
b int not null,
|
b int not null,
|
||||||
@ -600,7 +600,7 @@ ERROR HY000: Partition constant is out of partition function domain
|
|||||||
create table t1 (v varchar(12))
|
create table t1 (v varchar(12))
|
||||||
partition by range (ascii(v))
|
partition by range (ascii(v))
|
||||||
(partition p0 values less than (10));
|
(partition p0 values less than (10));
|
||||||
drop table t1;
|
ERROR HY000: This partition function is not allowed
|
||||||
create table t1 (a int)
|
create table t1 (a int)
|
||||||
partition by hash (rand(a));
|
partition by hash (rand(a));
|
||||||
ERROR 42000: Constant/Random expression in (sub)partitioning function is not allowed near ')' at line 2
|
ERROR 42000: Constant/Random expression in (sub)partitioning function is not allowed near ')' at line 2
|
||||||
@ -619,4 +619,4 @@ partition by range (a + (select count(*) from t1))
|
|||||||
ERROR HY000: This partition function is not allowed
|
ERROR HY000: This partition function is not allowed
|
||||||
create table t1 (a char(10))
|
create table t1 (a char(10))
|
||||||
partition by hash (extractvalue(a,'a'));
|
partition by hash (extractvalue(a,'a'));
|
||||||
ERROR HY000: The PARTITION function returns the wrong type
|
ERROR HY000: This partition function is not allowed
|
||||||
|
@ -1,18 +1,4 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin)
|
|
||||||
partition by hash(length(a))
|
|
||||||
partitions 10;
|
|
||||||
insert into t1 values (''),(' '),('a'),('a '),('a ');
|
|
||||||
explain partitions select * from t1 where a='a ';
|
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where
|
|
||||||
explain partitions select * from t1 where a='a';
|
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where
|
|
||||||
explain partitions select * from t1 where a='a ' OR a='a';
|
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 5 Using where
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a int unsigned)
|
create table t1 (a int unsigned)
|
||||||
partition by hash(a div 2)
|
partition by hash(a div 2)
|
||||||
partitions 4;
|
partitions 4;
|
||||||
|
@ -295,3 +295,7 @@ select * from t1;
|
|||||||
a
|
a
|
||||||
100
|
100
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (a char(1))
|
||||||
|
partition by list (ascii(ucase(a)))
|
||||||
|
(partition p1 values in (2));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
|
@ -10,13 +10,13 @@ subpartition sp01, subpartition sp02));
|
|||||||
ERROR HY000: Wrong number of subpartitions defined, mismatch with previous setting
|
ERROR HY000: Wrong number of subpartitions defined, mismatch with previous setting
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30))
|
CREATE TABLE t1 (f_date DATE, f_varchar VARCHAR(30))
|
||||||
PARTITION BY HASH(CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2;
|
PARTITION BY HASH(YEAR(f_date)) PARTITIONS 2;
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`f_date` date DEFAULT NULL,
|
`f_date` date DEFAULT NULL,
|
||||||
`f_varchar` varchar(30) DEFAULT NULL
|
`f_varchar` varchar(30) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 2 */
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) PARTITIONS 2 */
|
||||||
hello/master-data/test/t1#P#p0.MYD
|
hello/master-data/test/t1#P#p0.MYD
|
||||||
hello/master-data/test/t1#P#p0.MYI
|
hello/master-data/test/t1#P#p0.MYI
|
||||||
hello/master-data/test/t1#P#p1.MYD
|
hello/master-data/test/t1#P#p1.MYD
|
||||||
@ -29,7 +29,7 @@ Table Create Table
|
|||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`f_date` date DEFAULT NULL,
|
`f_date` date DEFAULT NULL,
|
||||||
`f_varchar` varchar(30) DEFAULT NULL
|
`f_varchar` varchar(30) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (CAST(YEAR(f_date) AS SIGNED INTEGER)) PARTITIONS 1 */
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (YEAR(f_date)) PARTITIONS 1 */
|
||||||
hello/master-data/test/t1#P#p0.MYD
|
hello/master-data/test/t1#P#p0.MYD
|
||||||
hello/master-data/test/t1#P#p0.MYI
|
hello/master-data/test/t1#P#p0.MYI
|
||||||
hello/master-data/test/t1.frm
|
hello/master-data/test/t1.frm
|
||||||
|
@ -676,25 +676,6 @@ f_int1 f_int2
|
|||||||
8 8
|
8 8
|
||||||
9 9
|
9 9
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a char(10) binary)
|
|
||||||
partition by list(length(a))
|
|
||||||
(partition p1 values in (1),
|
|
||||||
partition p2 values in (2),
|
|
||||||
partition p3 values in (3),
|
|
||||||
partition p4 values in (4),
|
|
||||||
partition p5 values in (5)
|
|
||||||
);
|
|
||||||
insert into t1 values ('a'),('bb'),('ccc'),('dddd'),('eeEee');
|
|
||||||
select * from t1 where a>='a' and a <= 'dddd';
|
|
||||||
a
|
|
||||||
a
|
|
||||||
bb
|
|
||||||
ccc
|
|
||||||
dddd
|
|
||||||
explain partitions select * from t1 where a>='a' and a <= 'dddd';
|
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 p1,p2,p3,p4,p5 ALL NULL NULL NULL NULL 5 Using where
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2)))
|
create table t1 (f_int1 integer) partition by list(abs(mod(f_int1,2)))
|
||||||
subpartition by hash(f_int1) subpartitions 2
|
subpartition by hash(f_int1) subpartitions 2
|
||||||
(
|
(
|
||||||
@ -847,23 +828,58 @@ explain partitions select * from t1 where a = 18446744073709551614;
|
|||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int)
|
create table t1 (a int)
|
||||||
partition by range((a & 0xFF) << 56) (
|
partition by range(a) (
|
||||||
partition p0 values less than (0x40 << 56),
|
partition p0 values less than (64),
|
||||||
partition p1 values less than (0x80 << 56),
|
partition p1 values less than (128),
|
||||||
partition p2 values less than (0xFF << 56)
|
partition p2 values less than (255)
|
||||||
|
);
|
||||||
|
create table t2 (a int)
|
||||||
|
partition by range(a+0) (
|
||||||
|
partition p0 values less than (64),
|
||||||
|
partition p1 values less than (128),
|
||||||
|
partition p2 values less than (255)
|
||||||
);
|
);
|
||||||
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
insert into t1 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
||||||
|
insert into t2 values (0x20), (0x20), (0x41), (0x41), (0xFE), (0xFE);
|
||||||
explain partitions select * from t1 where a=0;
|
explain partitions select * from t1 where a=0;
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
explain partitions select * from t2 where a=0;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
|
||||||
explain partitions select * from t1 where a=0xFE;
|
explain partitions select * from t1 where a=0xFE;
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
|
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
explain partitions select * from t1 where a>0xFE and a<= 0xFF;
|
explain partitions select * from t2 where a=0xFE;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
explain partitions select * from t1 where a > 0xFE AND a <= 0xFF;
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
explain partitions select * from t2 where a > 0xFE AND a <= 0xFF;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
explain partitions select * from t1 where a >= 0xFE AND a <= 0xFF;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 p2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
explain partitions select * from t2 where a >= 0xFE AND a <= 0xFF;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 p2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
explain partitions select * from t1 where a < 64 AND a >= 63;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 p0 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
explain partitions select * from t2 where a < 64 AND a >= 63;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 p0 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
explain partitions select * from t1 where a <= 64 AND a >= 63;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 p0,p1 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
explain partitions select * from t2 where a <= 64 AND a >= 63;
|
||||||
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 p0,p1 ALL NULL NULL NULL NULL 4 Using where
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
drop table t2;
|
||||||
create table t1(a bigint unsigned not null) partition by range(a+0) (
|
create table t1(a bigint unsigned not null) partition by range(a+0) (
|
||||||
partition p1 values less than (10),
|
partition p1 values less than (10),
|
||||||
partition p2 values less than (20),
|
partition p2 values less than (20),
|
||||||
|
@ -1,38 +1,4 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
|
|
||||||
partition by range (length(a) * b)
|
|
||||||
(partition p0 values less than (2), partition p1 values less than (400));
|
|
||||||
insert into t1 values ('a ', 2),('a',3);
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin, b int)
|
|
||||||
partition by range (b* length(a) * b)
|
|
||||||
(partition p0 values less than (2), partition p1 values less than (400));
|
|
||||||
insert into t1 values ('a ', 2),('a',3);
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
|
||||||
b varchar(10) charset latin1 collate latin1_bin)
|
|
||||||
partition by range (length(b) * length(a))
|
|
||||||
(partition p0 values less than (2), partition p1 values less than (400));
|
|
||||||
insert into t1 values ('a ', 'b '),('a','b');
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
|
||||||
b varchar(10) charset latin1 collate latin1_bin)
|
|
||||||
partition by range (length(a) * length(b))
|
|
||||||
(partition p0 values less than (2), partition p1 values less than (400));
|
|
||||||
insert into t1 values ('a ', 'b '),('a','b');
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
|
||||||
b varchar(10) charset latin1 collate latin1_bin, c int)
|
|
||||||
partition by range (length(a) * c)
|
|
||||||
(partition p0 values less than (2), partition p1 values less than (400));
|
|
||||||
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a varchar(10) charset latin1 collate latin1_bin,
|
|
||||||
b varchar(10) charset latin1 collate latin1_bin, c int)
|
|
||||||
partition by range (c * length(a))
|
|
||||||
(partition p0 values less than (2), partition p1 values less than (400));
|
|
||||||
insert into t1 values ('a ', 'b ', 2),('a','b', 3);
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a int unsigned)
|
create table t1 (a int unsigned)
|
||||||
partition by range (a)
|
partition by range (a)
|
||||||
(partition pnull values less than (0),
|
(partition pnull values less than (0),
|
||||||
@ -109,7 +75,7 @@ id select_type table partitions type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 Using where
|
1 SIMPLE t1 pnull_pnullsp0,pnull_pnullsp1,p0_p0sp0,p0_p0sp1 ALL NULL NULL NULL NULL 4 Using where
|
||||||
explain partitions select * from t1 where a > 1;
|
explain partitions select * from t1 where a > 1;
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 p1_p1sp0,p1_p1sp1 ALL NULL NULL NULL NULL 2 Using where
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int not null,
|
a int not null,
|
||||||
@ -743,45 +709,3 @@ WHERE (a >= '2004-07-01' AND a <= '2004-09-30') OR
|
|||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where
|
1 SIMPLE t1 p407,p408,p409,p507,p508,p509 ALL NULL NULL NULL NULL 18 Using where
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
create table t1 (a varchar(20))
|
|
||||||
partition by range (crc32(md5(a)))
|
|
||||||
(partition p0 values less than (100),
|
|
||||||
partition p1 values less than maxvalue);
|
|
||||||
insert into t1 values ("12345678901234567890");
|
|
||||||
insert into t1 values ("A2345678901234567890");
|
|
||||||
insert into t1 values ("B2345678901234567890");
|
|
||||||
insert into t1 values ("1234567890123456789");
|
|
||||||
insert into t1 values ("1234567890123456");
|
|
||||||
select * from t1;
|
|
||||||
a
|
|
||||||
12345678901234567890
|
|
||||||
A2345678901234567890
|
|
||||||
B2345678901234567890
|
|
||||||
1234567890123456789
|
|
||||||
1234567890123456
|
|
||||||
explain partitions select * from t1 where a = "12345678901234567890";
|
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
|
|
||||||
explain partitions select * from t1 where a = "12345678901234567890" OR
|
|
||||||
a = "A2345678901234567890" OR
|
|
||||||
a = "B2345678901234567890" OR
|
|
||||||
a = "C2345678901234567890";
|
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
|
|
||||||
explain partitions select * from t1 where a = "01234567890123456";
|
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
|
||||||
1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 5 Using where
|
|
||||||
select * from t1 where a = "01234567890123456";
|
|
||||||
a
|
|
||||||
select * from t1 where a = "12345678901234567890" OR
|
|
||||||
a = "A2345678901234567890" OR
|
|
||||||
a = "B2345678901234567890" OR
|
|
||||||
a = "C2345678901234567890";
|
|
||||||
a
|
|
||||||
12345678901234567890
|
|
||||||
A2345678901234567890
|
|
||||||
B2345678901234567890
|
|
||||||
select * from t1 where a = "12345678901234567890";
|
|
||||||
a
|
|
||||||
12345678901234567890
|
|
||||||
drop table t1;
|
|
||||||
|
@ -1301,6 +1301,7 @@ drop procedure f3;
|
|||||||
drop procedure f4;
|
drop procedure f4;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set GLOBAL query_cache_size=0;
|
set GLOBAL query_cache_size=0;
|
||||||
|
End of 4.1 tests
|
||||||
SET GLOBAL query_cache_size=102400;
|
SET GLOBAL query_cache_size=102400;
|
||||||
create table t1(a int);
|
create table t1(a int);
|
||||||
insert into t1 values(0), (1), (4), (5);
|
insert into t1 values(0), (1), (4), (5);
|
||||||
@ -1495,6 +1496,46 @@ insert into t1 values ('c');
|
|||||||
a
|
a
|
||||||
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;
|
||||||
|
set GLOBAL query_cache_type=default;
|
||||||
|
set GLOBAL query_cache_limit=default;
|
||||||
|
set GLOBAL query_cache_min_res_unit=default;
|
||||||
|
set GLOBAL query_cache_size=default;
|
||||||
|
End of 5.0 tests
|
||||||
drop database if exists db1;
|
drop database if exists db1;
|
||||||
drop database if exists db2;
|
drop database if exists db2;
|
||||||
set GLOBAL query_cache_size=15*1024*1024;
|
set GLOBAL query_cache_size=15*1024*1024;
|
||||||
@ -1543,3 +1584,4 @@ Variable_name Value
|
|||||||
Qcache_queries_in_cache 1
|
Qcache_queries_in_cache 1
|
||||||
drop database db2;
|
drop database db2;
|
||||||
drop database db3;
|
drop database db3;
|
||||||
|
End of 5.1 tests
|
||||||
|
@ -1,91 +0,0 @@
|
|||||||
stop slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
reset master;
|
|
||||||
reset slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
start slave;
|
|
||||||
**** On Master ****
|
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB;
|
|
||||||
INSERT INTO t1 VALUES (1,1), (2,2);
|
|
||||||
SELECT * FROM t1 ORDER BY a,b;
|
|
||||||
a b
|
|
||||||
1 1
|
|
||||||
2 2
|
|
||||||
**** On Slave ****
|
|
||||||
INSERT INTO t1 VALUE (3,3);
|
|
||||||
SELECT * FROM t1 ORDER BY a,b;
|
|
||||||
a b
|
|
||||||
1 1
|
|
||||||
2 2
|
|
||||||
3 3
|
|
||||||
**** On Master ****
|
|
||||||
TRUNCATE TABLE t1;
|
|
||||||
SELECT * FROM t1 ORDER BY a,b;
|
|
||||||
a b
|
|
||||||
**** On Slave ****
|
|
||||||
SELECT * FROM t1 ORDER BY a,b;
|
|
||||||
a b
|
|
||||||
**** On Master ****
|
|
||||||
DROP TABLE t1;
|
|
||||||
SHOW BINLOG EVENTS;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4
|
|
||||||
master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
|
|
||||||
master-bin.000001 223 Query 1 287 BEGIN
|
|
||||||
master-bin.000001 287 Table_map 1 40 table_id: # (test.t1)
|
|
||||||
master-bin.000001 327 Table_map 1 98 table_id: # (mysql.ndb_apply_status)
|
|
||||||
master-bin.000001 385 Write_rows 1 157 table_id: #
|
|
||||||
master-bin.000001 444 Write_rows 1 204 table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 491 Query 1 556 COMMIT
|
|
||||||
master-bin.000001 556 Query 1 636 use `test`; TRUNCATE TABLE t1
|
|
||||||
master-bin.000001 636 Query 1 712 use `test`; DROP TABLE t1
|
|
||||||
**** On Master ****
|
|
||||||
CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB;
|
|
||||||
INSERT INTO t1 VALUES (1,1), (2,2);
|
|
||||||
SELECT * FROM t1 ORDER BY a,b;
|
|
||||||
a b
|
|
||||||
1 1
|
|
||||||
2 2
|
|
||||||
**** On Slave ****
|
|
||||||
INSERT INTO t1 VALUE (3,3);
|
|
||||||
SELECT * FROM t1 ORDER BY a,b;
|
|
||||||
a b
|
|
||||||
1 1
|
|
||||||
2 2
|
|
||||||
3 3
|
|
||||||
**** On Master ****
|
|
||||||
DELETE FROM t1;
|
|
||||||
SELECT * FROM t1 ORDER BY a,b;
|
|
||||||
a b
|
|
||||||
**** On Slave ****
|
|
||||||
SELECT * FROM t1 ORDER BY a,b;
|
|
||||||
a b
|
|
||||||
3 3
|
|
||||||
**** On Master ****
|
|
||||||
DROP TABLE t1;
|
|
||||||
SHOW BINLOG EVENTS;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 4 Format_desc 1 106 Server ver: SERVER_VERSION, Binlog ver: 4
|
|
||||||
master-bin.000001 106 Query 1 223 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
|
|
||||||
master-bin.000001 223 Query 1 287 BEGIN
|
|
||||||
master-bin.000001 287 Table_map 1 40 table_id: # (test.t1)
|
|
||||||
master-bin.000001 327 Table_map 1 98 table_id: # (mysql.ndb_apply_status)
|
|
||||||
master-bin.000001 385 Write_rows 1 157 table_id: #
|
|
||||||
master-bin.000001 444 Write_rows 1 204 table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 491 Query 1 556 COMMIT
|
|
||||||
master-bin.000001 556 Query 1 636 use `test`; TRUNCATE TABLE t1
|
|
||||||
master-bin.000001 636 Query 1 712 use `test`; DROP TABLE t1
|
|
||||||
master-bin.000001 712 Query 1 829 use `test`; CREATE TABLE t1 (a INT PRIMARY KEY, b LONG) ENGINE=NDB
|
|
||||||
master-bin.000001 829 Query 1 893 BEGIN
|
|
||||||
master-bin.000001 893 Table_map 1 40 table_id: # (test.t1)
|
|
||||||
master-bin.000001 933 Table_map 1 98 table_id: # (mysql.ndb_apply_status)
|
|
||||||
master-bin.000001 991 Write_rows 1 157 table_id: #
|
|
||||||
master-bin.000001 1050 Write_rows 1 204 table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 1097 Query 1 1162 COMMIT
|
|
||||||
master-bin.000001 1162 Query 1 1226 BEGIN
|
|
||||||
master-bin.000001 1226 Table_map 1 40 table_id: # (test.t1)
|
|
||||||
master-bin.000001 1266 Table_map 1 98 table_id: # (mysql.ndb_apply_status)
|
|
||||||
master-bin.000001 1324 Write_rows 1 157 table_id: #
|
|
||||||
master-bin.000001 1383 Delete_rows 1 196 table_id: # flags: STMT_END_F
|
|
||||||
master-bin.000001 1422 Query 1 1487 COMMIT
|
|
||||||
master-bin.000001 1487 Query 1 1563 use `test`; DROP TABLE t1
|
|
@ -3492,7 +3492,7 @@ SELECT 0.9888889889 * 1.011111411911;
|
|||||||
0.9998769417899202067879
|
0.9998769417899202067879
|
||||||
prepare stmt from 'select 1 as " a "';
|
prepare stmt from 'select 1 as " a "';
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1548 Leading spaces are removed from name ' a '
|
Warning 1466 Leading spaces are removed from name ' a '
|
||||||
execute stmt;
|
execute stmt;
|
||||||
a
|
a
|
||||||
1
|
1
|
||||||
|
@ -1148,7 +1148,37 @@ DROP TABLE t1;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
End of 5.0 tests.
|
flush status;
|
||||||
|
show variables like "log_queries_not_using_indexes";
|
||||||
|
Variable_name Value
|
||||||
|
log_queries_not_using_indexes ON
|
||||||
|
select 1 from information_schema.tables limit 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
show status like 'slow_queries';
|
||||||
|
Variable_name Value
|
||||||
|
Slow_queries 2
|
||||||
|
set global log_queries_not_using_indexes=OFF;
|
||||||
|
show variables like "log_queries_not_using_indexes";
|
||||||
|
Variable_name Value
|
||||||
|
log_queries_not_using_indexes OFF
|
||||||
|
select 1 from information_schema.tables limit 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
show status like 'slow_queries';
|
||||||
|
Variable_name Value
|
||||||
|
Slow_queries 2
|
||||||
|
set global log_queries_not_using_indexes=ON;
|
||||||
|
show variables like "log_queries_not_using_indexes";
|
||||||
|
Variable_name Value
|
||||||
|
log_queries_not_using_indexes ON
|
||||||
|
select 1 from information_schema.tables limit 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
show status like 'slow_queries';
|
||||||
|
Variable_name Value
|
||||||
|
Slow_queries 4
|
||||||
|
End of 5.0 tests
|
||||||
SHOW AUTHORS;
|
SHOW AUTHORS;
|
||||||
create database mysqltest;
|
create database mysqltest;
|
||||||
show create database mysqltest;
|
show create database mysqltest;
|
||||||
@ -1168,7 +1198,7 @@ drop database mysqltest;
|
|||||||
show full plugin;
|
show full plugin;
|
||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Warning 1543 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead
|
Warning 1287 The syntax 'SHOW PLUGIN' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW PLUGINS' instead
|
||||||
show plugin;
|
show plugin;
|
||||||
show plugins;
|
show plugins;
|
||||||
create database `mysqlttest\1`;
|
create database `mysqlttest\1`;
|
||||||
@ -1282,4 +1312,43 @@ t1_bi CREATE DEFINER=`root`@`localhost` TRIGGER t1_bi BEFORE INSERT ON t1 FOR E
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
DEALLOCATE PREPARE stmt1;
|
DEALLOCATE PREPARE stmt1;
|
||||||
|
set names koi8r;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
DROP PROCEDURE IF EXISTS p1;
|
||||||
|
DROP FUNCTION IF EXISTS f1;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
DROP EVENT IF EXISTS ev1;
|
||||||
|
CREATE VIEW v1 AS SELECT 'ÔÅÓÔ' AS test;
|
||||||
|
CREATE PROCEDURE p1() SELECT 'ÔÅÓÔ' AS test;
|
||||||
|
CREATE FUNCTION f1() RETURNS CHAR(10) RETURN 'ÔÅÓÔ';
|
||||||
|
CREATE TABLE t1(c1 CHAR(10));
|
||||||
|
CREATE TRIGGER t1_bi BEFORE INSERT ON t1
|
||||||
|
FOR EACH ROW
|
||||||
|
SET NEW.c1 = 'ÔÅÓÔ';
|
||||||
|
CREATE EVENT ev1 ON SCHEDULE AT '2030-01-01 00:00:00' DO SELECT 'ÔÅÓÔ' AS test;
|
||||||
|
set names utf8;
|
||||||
|
SHOW CREATE VIEW v1;
|
||||||
|
View Create View character_set_client collation_connection
|
||||||
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select _koi8r'теÑ<C2B5>Ñ‚' AS `test` koi8r koi8r_general_ci
|
||||||
|
SHOW CREATE PROCEDURE p1;
|
||||||
|
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
|
||||||
|
p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
||||||
|
SELECT 'теÑ<C2B5>Ñ‚' AS test koi8r koi8r_general_ci latin1_swedish_ci
|
||||||
|
SHOW CREATE FUNCTION f1;
|
||||||
|
Function sql_mode Create Function character_set_client collation_connection Database Collation
|
||||||
|
f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS char(10) CHARSET latin1
|
||||||
|
RETURN 'теÑ<C2B5>Ñ‚' koi8r koi8r_general_ci latin1_swedish_ci
|
||||||
|
SHOW CREATE TRIGGER t1_bi;
|
||||||
|
Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
|
||||||
|
t1_bi CREATE DEFINER=`root`@`localhost` TRIGGER t1_bi BEFORE INSERT ON t1
|
||||||
|
FOR EACH ROW
|
||||||
|
SET NEW.c1 = 'теÑ<C2B5>Ñ‚' koi8r koi8r_general_ci latin1_swedish_ci
|
||||||
|
SHOW CREATE EVENT ev1;
|
||||||
|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
|
||||||
|
ev1 SYSTEM CREATE EVENT `ev1` ON SCHEDULE AT '2030-01-01 00:00:00' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 'теÑ<C2B5>Ñ‚' AS test koi8r koi8r_general_ci latin1_swedish_ci
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP EVENT ev1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -267,4 +267,26 @@ drop table bug_27907_logs;
|
|||||||
insert into bug_27907_t1(a) values (1);
|
insert into bug_27907_t1(a) values (1);
|
||||||
ERROR 42S02: Table 'test.bug_27907_logs' doesn't exist
|
ERROR 42S02: Table 'test.bug_27907_logs' doesn't exist
|
||||||
drop table bug_27907_t1;
|
drop table bug_27907_t1;
|
||||||
|
|
||||||
|
Bug#22427 create table if not exists + stored function results in
|
||||||
|
inconsistent behavior
|
||||||
|
|
||||||
|
Add a test case, the bug itself was fixed by the patch for
|
||||||
|
Bug#20662
|
||||||
|
|
||||||
|
drop table if exists t1;
|
||||||
|
drop function if exists f_bug22427;
|
||||||
|
create table t1 (i int);
|
||||||
|
insert into t1 values (1);
|
||||||
|
create function f_bug22427() returns int return (select max(i) from t1);
|
||||||
|
select f_bug22427();
|
||||||
|
f_bug22427()
|
||||||
|
1
|
||||||
|
create table if not exists t1 select f_bug22427() as i;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
create table t1 select f_bug22427() as i;
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
drop table t1;
|
||||||
|
drop function f_bug22427;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -5665,7 +5665,7 @@ drop function if exists pi;
|
|||||||
create function pi() returns varchar(50)
|
create function pi() returns varchar(50)
|
||||||
return "pie, my favorite desert.";
|
return "pie, my favorite desert.";
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1581 This function 'pi' has the same name as a native function
|
Note 1582 This function 'pi' has the same name as a native function
|
||||||
SET @save_sql_mode=@@sql_mode;
|
SET @save_sql_mode=@@sql_mode;
|
||||||
SET SQL_MODE='IGNORE_SPACE';
|
SET SQL_MODE='IGNORE_SPACE';
|
||||||
select pi(), pi ();
|
select pi(), pi ();
|
||||||
@ -5714,15 +5714,15 @@ use test;
|
|||||||
create function `database`() returns varchar(50)
|
create function `database`() returns varchar(50)
|
||||||
return "Stored function database";
|
return "Stored function database";
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1581 This function 'database' has the same name as a native function
|
Note 1582 This function 'database' has the same name as a native function
|
||||||
create function `current_user`() returns varchar(50)
|
create function `current_user`() returns varchar(50)
|
||||||
return "Stored function current_user";
|
return "Stored function current_user";
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1581 This function 'current_user' has the same name as a native function
|
Note 1582 This function 'current_user' has the same name as a native function
|
||||||
create function md5(x varchar(50)) returns varchar(50)
|
create function md5(x varchar(50)) returns varchar(50)
|
||||||
return "Stored function md5";
|
return "Stored function md5";
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1581 This function 'md5' has the same name as a native function
|
Note 1582 This function 'md5' has the same name as a native function
|
||||||
SET SQL_MODE='IGNORE_SPACE';
|
SET SQL_MODE='IGNORE_SPACE';
|
||||||
select database(), database ();
|
select database(), database ();
|
||||||
database() database ()
|
database() database ()
|
||||||
@ -6281,6 +6281,31 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP FUNCTION metered;
|
DROP FUNCTION metered;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
drop database if exists mysqltest_db1;
|
||||||
|
create database mysqltest_db1;
|
||||||
|
create procedure mysqltest_db1.sp_bug28551() begin end;
|
||||||
|
call mysqltest_db1.sp_bug28551();
|
||||||
|
show warnings;
|
||||||
|
Level Code Message
|
||||||
|
drop database mysqltest_db1;
|
||||||
|
drop database if exists mysqltest_db1;
|
||||||
|
drop table if exists test.t1;
|
||||||
|
create database mysqltest_db1;
|
||||||
|
use mysqltest_db1;
|
||||||
|
drop database mysqltest_db1;
|
||||||
|
create table test.t1 (id int);
|
||||||
|
insert into test.t1 (id) values (1);
|
||||||
|
create procedure test.sp_bug29050() begin select * from t1; end//
|
||||||
|
show warnings;
|
||||||
|
Level Code Message
|
||||||
|
call test.sp_bug29050();
|
||||||
|
id
|
||||||
|
1
|
||||||
|
show warnings;
|
||||||
|
Level Code Message
|
||||||
|
use test;
|
||||||
|
drop procedure sp_bug29050;
|
||||||
|
drop table t1;
|
||||||
drop procedure if exists proc_25411_a;
|
drop procedure if exists proc_25411_a;
|
||||||
drop procedure if exists proc_25411_b;
|
drop procedure if exists proc_25411_b;
|
||||||
drop procedure if exists proc_25411_c;
|
drop procedure if exists proc_25411_c;
|
||||||
|
@ -7,11 +7,11 @@ return 1;
|
|||||||
create function x() returns int
|
create function x() returns int
|
||||||
return 2;
|
return 2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1581 This function 'x' has the same name as a native function
|
Note 1582 This function 'x' has the same name as a native function
|
||||||
create function y() returns int
|
create function y() returns int
|
||||||
return 3;
|
return 3;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1581 This function 'y' has the same name as a native function
|
Note 1582 This function 'y' has the same name as a native function
|
||||||
select a();
|
select a();
|
||||||
a()
|
a()
|
||||||
1
|
1
|
||||||
|
@ -535,7 +535,7 @@ use db_bug7787|
|
|||||||
CREATE PROCEDURE p1()
|
CREATE PROCEDURE p1()
|
||||||
SHOW INNODB STATUS; |
|
SHOW INNODB STATUS; |
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1543 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead
|
Warning 1287 The syntax 'SHOW INNODB STATUS' is deprecated and will be removed in MySQL 5.2. Please use 'SHOW ENGINE INNODB STATUS' instead
|
||||||
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost|
|
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost|
|
||||||
DROP DATABASE db_bug7787|
|
DROP DATABASE db_bug7787|
|
||||||
drop user user_bug7787@localhost|
|
drop user user_bug7787@localhost|
|
||||||
|
3
mysql-test/r/ssl-big.result
Normal file
3
mysql-test/r/ssl-big.result
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
create table t1 (a int);
|
||||||
|
drop table t1;
|
@ -133,4 +133,26 @@ a
|
|||||||
42
|
42
|
||||||
drop table t1;
|
drop table t1;
|
||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
|
CREATE DATABASE db1;
|
||||||
|
CREATE DATABASE db2;
|
||||||
|
USE db2;
|
||||||
|
INSERT INTO db2.t1 VALUES (1);
|
||||||
|
SELECT * FROM db2.t1;
|
||||||
|
b
|
||||||
|
1
|
||||||
|
RESET QUERY CACHE;
|
||||||
|
USE db1;
|
||||||
|
SET SESSION keep_files_on_create = TRUE;
|
||||||
|
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
||||||
|
Got one of the listed errors
|
||||||
|
CREATE TABLE t3 (a INT) Engine=MyISAM;
|
||||||
|
INSERT INTO t3 VALUES (1),(2),(3);
|
||||||
|
TRUNCATE TABLE t3;
|
||||||
|
SELECT * from t3;
|
||||||
|
a
|
||||||
|
SET SESSION keep_files_on_create = DEFAULT;
|
||||||
|
DROP TABLE db2.t1, db1.t3;
|
||||||
|
DROP DATABASE db1;
|
||||||
|
DROP DATABASE db2;
|
||||||
|
USE test;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -82,3 +82,62 @@ ALICE 33 1 0
|
|||||||
THE CROWN 43 1 0
|
THE CROWN 43 1 0
|
||||||
THE PIE 53 1 1
|
THE PIE 53 1 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
Bug#26141 mixing table types in trigger causes full
|
||||||
|
table lock on innodb table
|
||||||
|
|
||||||
|
Ensure we do not open and lock tables for the triggers we do not
|
||||||
|
fire.
|
||||||
|
|
||||||
|
drop table if exists t1, t2, t3;
|
||||||
|
drop trigger if exists trg_bug26141_au;
|
||||||
|
drop trigger if exists trg_bug26141_ai;
|
||||||
|
create table t1 (c int primary key) engine=innodb;
|
||||||
|
create table t2 (c int) engine=myisam;
|
||||||
|
create table t3 (c int) engine=myisam;
|
||||||
|
insert into t1 (c) values (1);
|
||||||
|
create trigger trg_bug26141_ai after insert on t1
|
||||||
|
for each row
|
||||||
|
begin
|
||||||
|
insert into t2 (c) values (1);
|
||||||
|
# We need the 'sync' lock to synchronously wait in connection 2 till
|
||||||
|
# the moment when the trigger acquired all the locks.
|
||||||
|
select release_lock("lock_bug26141_sync") into @a;
|
||||||
|
# 1000 is time in seconds of lock wait timeout -- this is a way
|
||||||
|
# to cause a manageable sleep up to 1000 seconds
|
||||||
|
select get_lock("lock_bug26141_wait", 1000) into @a;
|
||||||
|
end|
|
||||||
|
create trigger trg_bug26141_au after update on t1
|
||||||
|
for each row
|
||||||
|
begin
|
||||||
|
insert into t3 (c) values (1);
|
||||||
|
end|
|
||||||
|
select get_lock("lock_bug26141_wait", 0);
|
||||||
|
get_lock("lock_bug26141_wait", 0)
|
||||||
|
1
|
||||||
|
select get_lock("lock_bug26141_sync", /* must not be priorly locked */ 0);
|
||||||
|
get_lock("lock_bug26141_sync", /* must not be priorly locked */ 0)
|
||||||
|
1
|
||||||
|
insert into t1 (c) values (2);
|
||||||
|
select get_lock("lock_bug26141_sync", 1000);
|
||||||
|
get_lock("lock_bug26141_sync", 1000)
|
||||||
|
1
|
||||||
|
update t1 set c=3 where c=1;
|
||||||
|
select release_lock("lock_bug26141_sync");
|
||||||
|
release_lock("lock_bug26141_sync")
|
||||||
|
1
|
||||||
|
select release_lock("lock_bug26141_wait");
|
||||||
|
release_lock("lock_bug26141_wait")
|
||||||
|
1
|
||||||
|
select * from t1;
|
||||||
|
c
|
||||||
|
2
|
||||||
|
3
|
||||||
|
select * from t2;
|
||||||
|
c
|
||||||
|
1
|
||||||
|
select * from t3;
|
||||||
|
c
|
||||||
|
1
|
||||||
|
drop table t1, t2, t3;
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -351,7 +351,7 @@ create trigger trg1 before insert on mysqltest.t1 for each row set @a:= 1;
|
|||||||
ERROR HY000: Trigger in wrong schema
|
ERROR HY000: Trigger in wrong schema
|
||||||
use mysqltest;
|
use mysqltest;
|
||||||
create trigger test.trg1 before insert on t1 for each row set @a:= 1;
|
create trigger test.trg1 before insert on t1 for each row set @a:= 1;
|
||||||
ERROR HY000: Trigger in wrong schema
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
use test;
|
use test;
|
||||||
create table t1 (i int, j int default 10, k int not null, key (k));
|
create table t1 (i int, j int default 10, k int not null, key (k));
|
||||||
@ -842,7 +842,7 @@ drop table t1;
|
|||||||
create trigger t1_bi before insert on test.t1 for each row set @a:=0;
|
create trigger t1_bi before insert on test.t1 for each row set @a:=0;
|
||||||
ERROR 3D000: No database selected
|
ERROR 3D000: No database selected
|
||||||
create trigger test.t1_bi before insert on t1 for each row set @a:=0;
|
create trigger test.t1_bi before insert on t1 for each row set @a:=0;
|
||||||
ERROR 3D000: No database selected
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
drop trigger t1_bi;
|
drop trigger t1_bi;
|
||||||
ERROR 3D000: No database selected
|
ERROR 3D000: No database selected
|
||||||
create table t1 (id int);
|
create table t1 (id int);
|
||||||
@ -1476,6 +1476,491 @@ DROP TRIGGER t1_test;
|
|||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
SET SESSION LOW_PRIORITY_UPDATES=DEFAULT;
|
SET SESSION LOW_PRIORITY_UPDATES=DEFAULT;
|
||||||
SET GLOBAL LOW_PRIORITY_UPDATES=DEFAULT;
|
SET GLOBAL LOW_PRIORITY_UPDATES=DEFAULT;
|
||||||
|
|
||||||
|
Bug#28502 Triggers that update another innodb table will block
|
||||||
|
on X lock unnecessarily
|
||||||
|
|
||||||
|
Ensure we do not open and lock tables for triggers we do not fire.
|
||||||
|
|
||||||
|
drop table if exists t1, t2;
|
||||||
|
drop trigger if exists trg_bug28502_au;
|
||||||
|
create table t1 (id int, count int);
|
||||||
|
create table t2 (id int);
|
||||||
|
create trigger trg_bug28502_au before update on t2
|
||||||
|
for each row
|
||||||
|
begin
|
||||||
|
if (new.id is not null) then
|
||||||
|
update t1 set count= count + 1 where id = old.id;
|
||||||
|
end if;
|
||||||
|
end|
|
||||||
|
insert into t1 (id, count) values (1, 0);
|
||||||
|
lock table t1 write;
|
||||||
|
insert into t2 set id=1;
|
||||||
|
unlock tables;
|
||||||
|
update t2 set id=1 where id=1;
|
||||||
|
select * from t1;
|
||||||
|
id count
|
||||||
|
1 1
|
||||||
|
select * from t2;
|
||||||
|
id
|
||||||
|
1
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
|
Additionally, provide test coverage for triggers and
|
||||||
|
all MySQL data changing commands.
|
||||||
|
|
||||||
|
drop table if exists t1, t2, t1_op_log;
|
||||||
|
drop view if exists v1;
|
||||||
|
drop trigger if exists trg_bug28502_bi;
|
||||||
|
drop trigger if exists trg_bug28502_ai;
|
||||||
|
drop trigger if exists trg_bug28502_bu;
|
||||||
|
drop trigger if exists trg_bug28502_au;
|
||||||
|
drop trigger if exists trg_bug28502_bd;
|
||||||
|
drop trigger if exists trg_bug28502_ad;
|
||||||
|
create table t1 (id int primary key auto_increment, operation varchar(255));
|
||||||
|
create table t2 (id int primary key);
|
||||||
|
create table t1_op_log(operation varchar(255));
|
||||||
|
create view v1 as select * from t1;
|
||||||
|
create trigger trg_bug28502_bi before insert on t1
|
||||||
|
for each row
|
||||||
|
insert into t1_op_log (operation)
|
||||||
|
values (concat("Before INSERT, new=", new.operation));
|
||||||
|
create trigger trg_bug28502_ai after insert on t1
|
||||||
|
for each row
|
||||||
|
insert into t1_op_log (operation)
|
||||||
|
values (concat("After INSERT, new=", new.operation));
|
||||||
|
create trigger trg_bug28502_bu before update on t1
|
||||||
|
for each row
|
||||||
|
insert into t1_op_log (operation)
|
||||||
|
values (concat("Before UPDATE, new=", new.operation,
|
||||||
|
", old=", old.operation));
|
||||||
|
create trigger trg_bug28502_au after update on t1
|
||||||
|
for each row
|
||||||
|
insert into t1_op_log (operation)
|
||||||
|
values (concat("After UPDATE, new=", new.operation,
|
||||||
|
", old=", old.operation));
|
||||||
|
create trigger trg_bug28502_bd before delete on t1
|
||||||
|
for each row
|
||||||
|
insert into t1_op_log (operation)
|
||||||
|
values (concat("Before DELETE, old=", old.operation));
|
||||||
|
create trigger trg_bug28502_ad after delete on t1
|
||||||
|
for each row
|
||||||
|
insert into t1_op_log (operation)
|
||||||
|
values (concat("After DELETE, old=", old.operation));
|
||||||
|
insert into t1 (operation) values ("INSERT");
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 INSERT
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT
|
||||||
|
After INSERT, new=INSERT
|
||||||
|
truncate t1_op_log;
|
||||||
|
update t1 set operation="UPDATE" where id=@id;
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 UPDATE
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before UPDATE, new=UPDATE, old=INSERT
|
||||||
|
After UPDATE, new=UPDATE, old=INSERT
|
||||||
|
truncate t1_op_log;
|
||||||
|
delete from t1 where id=@id;
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before DELETE, old=UPDATE
|
||||||
|
After DELETE, old=UPDATE
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into t1 (id, operation) values
|
||||||
|
(NULL, "INSERT ON DUPLICATE KEY UPDATE, inserting a new key")
|
||||||
|
on duplicate key update id=NULL, operation="Should never happen";
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
After INSERT, new=INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into t1 (id, operation) values
|
||||||
|
(@id, "INSERT ON DUPLICATE KEY UPDATE, the key value is the same")
|
||||||
|
on duplicate key update id=NULL,
|
||||||
|
operation="INSERT ON DUPLICATE KEY UPDATE, updating the duplicate";
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
0 INSERT ON DUPLICATE KEY UPDATE, updating the duplicate
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT ON DUPLICATE KEY UPDATE, the key value is the same
|
||||||
|
Before UPDATE, new=INSERT ON DUPLICATE KEY UPDATE, updating the duplicate, old=INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
After UPDATE, new=INSERT ON DUPLICATE KEY UPDATE, updating the duplicate, old=INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
replace into t1 values (NULL, "REPLACE, inserting a new key");
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 REPLACE, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=REPLACE, inserting a new key
|
||||||
|
After INSERT, new=REPLACE, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
replace into t1 values (@id, "REPLACE, deleting the duplicate");
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 REPLACE, deleting the duplicate
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=REPLACE, deleting the duplicate
|
||||||
|
Before DELETE, old=REPLACE, inserting a new key
|
||||||
|
After DELETE, old=REPLACE, inserting a new key
|
||||||
|
After INSERT, new=REPLACE, deleting the duplicate
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
create table if not exists t1
|
||||||
|
select NULL, "CREATE TABLE ... SELECT, inserting a new key";
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
create table if not exists t1 replace
|
||||||
|
select @id, "CREATE TABLE ... REPLACE SELECT, deleting a duplicate key";
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
|
||||||
|
Before DELETE, old=CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
After DELETE, old=CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into t1 (id, operation)
|
||||||
|
select NULL, "INSERT ... SELECT, inserting a new key";
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 INSERT ... SELECT, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=INSERT ... SELECT, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into t1 (id, operation)
|
||||||
|
select @id,
|
||||||
|
"INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate"
|
||||||
|
on duplicate key update id=NULL,
|
||||||
|
operation="INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate";
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
0 INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate
|
||||||
|
Before UPDATE, new=INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate, old=INSERT ... SELECT, inserting a new key
|
||||||
|
After UPDATE, new=INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate, old=INSERT ... SELECT, inserting a new key
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
replace into t1 (id, operation)
|
||||||
|
select NULL, "REPLACE ... SELECT, inserting a new key";
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 REPLACE ... SELECT, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=REPLACE ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=REPLACE ... SELECT, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
replace into t1 (id, operation)
|
||||||
|
select @id, "REPLACE ... SELECT, deleting a duplicate";
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 REPLACE ... SELECT, deleting a duplicate
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=REPLACE ... SELECT, deleting a duplicate
|
||||||
|
Before DELETE, old=REPLACE ... SELECT, inserting a new key
|
||||||
|
After DELETE, old=REPLACE ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=REPLACE ... SELECT, deleting a duplicate
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into t1 (id, operation) values (1, "INSERT for multi-DELETE");
|
||||||
|
insert into t2 (id) values (1);
|
||||||
|
delete t1.*, t2.* from t1, t2 where t1.id=1;
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
select * from t2;
|
||||||
|
id
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT for multi-DELETE
|
||||||
|
After INSERT, new=INSERT for multi-DELETE
|
||||||
|
Before DELETE, old=INSERT for multi-DELETE
|
||||||
|
After DELETE, old=INSERT for multi-DELETE
|
||||||
|
truncate t1;
|
||||||
|
truncate t2;
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into t1 (id, operation) values (1, "INSERT for multi-UPDATE");
|
||||||
|
insert into t2 (id) values (1);
|
||||||
|
update t1, t2 set t1.id=2, operation="multi-UPDATE" where t1.id=1;
|
||||||
|
update t1, t2
|
||||||
|
set t2.id=3, operation="multi-UPDATE, SET for t2, but the trigger is fired" where t1.id=2;
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
2 multi-UPDATE, SET for t2, but the trigger is fired
|
||||||
|
select * from t2;
|
||||||
|
id
|
||||||
|
3
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT for multi-UPDATE
|
||||||
|
After INSERT, new=INSERT for multi-UPDATE
|
||||||
|
Before UPDATE, new=multi-UPDATE, old=INSERT for multi-UPDATE
|
||||||
|
After UPDATE, new=multi-UPDATE, old=INSERT for multi-UPDATE
|
||||||
|
Before UPDATE, new=multi-UPDATE, SET for t2, but the trigger is fired, old=multi-UPDATE
|
||||||
|
After UPDATE, new=multi-UPDATE, SET for t2, but the trigger is fired, old=multi-UPDATE
|
||||||
|
truncate table t1;
|
||||||
|
truncate table t2;
|
||||||
|
truncate table t1_op_log;
|
||||||
|
|
||||||
|
Now do the same but use a view instead of the base table.
|
||||||
|
|
||||||
|
insert into v1 (operation) values ("INSERT");
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 INSERT
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT
|
||||||
|
After INSERT, new=INSERT
|
||||||
|
truncate t1_op_log;
|
||||||
|
update v1 set operation="UPDATE" where id=@id;
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 UPDATE
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before UPDATE, new=UPDATE, old=INSERT
|
||||||
|
After UPDATE, new=UPDATE, old=INSERT
|
||||||
|
truncate t1_op_log;
|
||||||
|
delete from v1 where id=@id;
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before DELETE, old=UPDATE
|
||||||
|
After DELETE, old=UPDATE
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into v1 (id, operation) values
|
||||||
|
(NULL, "INSERT ON DUPLICATE KEY UPDATE, inserting a new key")
|
||||||
|
on duplicate key update id=NULL, operation="Should never happen";
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
After INSERT, new=INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into v1 (id, operation) values
|
||||||
|
(@id, "INSERT ON DUPLICATE KEY UPDATE, the key value is the same")
|
||||||
|
on duplicate key update id=NULL,
|
||||||
|
operation="INSERT ON DUPLICATE KEY UPDATE, updating the duplicate";
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
0 INSERT ON DUPLICATE KEY UPDATE, updating the duplicate
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT ON DUPLICATE KEY UPDATE, the key value is the same
|
||||||
|
Before UPDATE, new=INSERT ON DUPLICATE KEY UPDATE, updating the duplicate, old=INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
After UPDATE, new=INSERT ON DUPLICATE KEY UPDATE, updating the duplicate, old=INSERT ON DUPLICATE KEY UPDATE, inserting a new key
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
replace into v1 values (NULL, "REPLACE, inserting a new key");
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 REPLACE, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=REPLACE, inserting a new key
|
||||||
|
After INSERT, new=REPLACE, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
replace into v1 values (@id, "REPLACE, deleting the duplicate");
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 REPLACE, deleting the duplicate
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=REPLACE, deleting the duplicate
|
||||||
|
Before DELETE, old=REPLACE, inserting a new key
|
||||||
|
After DELETE, old=REPLACE, inserting a new key
|
||||||
|
After INSERT, new=REPLACE, deleting the duplicate
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
create table if not exists v1
|
||||||
|
select NULL, "CREATE TABLE ... SELECT, inserting a new key";
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 'v1' already exists
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
create table if not exists v1 replace
|
||||||
|
select @id, "CREATE TABLE ... REPLACE SELECT, deleting a duplicate key";
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 'v1' already exists
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
|
||||||
|
Before DELETE, old=CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
After DELETE, old=CREATE TABLE ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into v1 (id, operation)
|
||||||
|
select NULL, "INSERT ... SELECT, inserting a new key";
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 INSERT ... SELECT, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=INSERT ... SELECT, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into v1 (id, operation)
|
||||||
|
select @id,
|
||||||
|
"INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate"
|
||||||
|
on duplicate key update id=NULL,
|
||||||
|
operation="INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate";
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
0 INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate
|
||||||
|
Before UPDATE, new=INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate, old=INSERT ... SELECT, inserting a new key
|
||||||
|
After UPDATE, new=INSERT ... SELECT ... ON DUPLICATE KEY UPDATE, updating a duplicate, old=INSERT ... SELECT, inserting a new key
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
replace into v1 (id, operation)
|
||||||
|
select NULL, "REPLACE ... SELECT, inserting a new key";
|
||||||
|
set @id=last_insert_id();
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 REPLACE ... SELECT, inserting a new key
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=REPLACE ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=REPLACE ... SELECT, inserting a new key
|
||||||
|
truncate t1_op_log;
|
||||||
|
replace into v1 (id, operation)
|
||||||
|
select @id, "REPLACE ... SELECT, deleting a duplicate";
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
1 REPLACE ... SELECT, deleting a duplicate
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=REPLACE ... SELECT, deleting a duplicate
|
||||||
|
Before DELETE, old=REPLACE ... SELECT, inserting a new key
|
||||||
|
After DELETE, old=REPLACE ... SELECT, inserting a new key
|
||||||
|
After INSERT, new=REPLACE ... SELECT, deleting a duplicate
|
||||||
|
truncate t1;
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into v1 (id, operation) values (1, "INSERT for multi-DELETE");
|
||||||
|
insert into t2 (id) values (1);
|
||||||
|
delete v1.*, t2.* from v1, t2 where v1.id=1;
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
select * from t2;
|
||||||
|
id
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT for multi-DELETE
|
||||||
|
After INSERT, new=INSERT for multi-DELETE
|
||||||
|
Before DELETE, old=INSERT for multi-DELETE
|
||||||
|
After DELETE, old=INSERT for multi-DELETE
|
||||||
|
truncate t1;
|
||||||
|
truncate t2;
|
||||||
|
truncate t1_op_log;
|
||||||
|
insert into v1 (id, operation) values (1, "INSERT for multi-UPDATE");
|
||||||
|
insert into t2 (id) values (1);
|
||||||
|
update v1, t2 set v1.id=2, operation="multi-UPDATE" where v1.id=1;
|
||||||
|
update v1, t2
|
||||||
|
set t2.id=3, operation="multi-UPDATE, SET for t2, but the trigger is fired" where v1.id=2;
|
||||||
|
select * from t1;
|
||||||
|
id operation
|
||||||
|
2 multi-UPDATE, SET for t2, but the trigger is fired
|
||||||
|
select * from t2;
|
||||||
|
id
|
||||||
|
3
|
||||||
|
select * from t1_op_log;
|
||||||
|
operation
|
||||||
|
Before INSERT, new=INSERT for multi-UPDATE
|
||||||
|
After INSERT, new=INSERT for multi-UPDATE
|
||||||
|
Before UPDATE, new=multi-UPDATE, old=INSERT for multi-UPDATE
|
||||||
|
After UPDATE, new=multi-UPDATE, old=INSERT for multi-UPDATE
|
||||||
|
Before UPDATE, new=multi-UPDATE, SET for t2, but the trigger is fired, old=multi-UPDATE
|
||||||
|
After UPDATE, new=multi-UPDATE, SET for t2, but the trigger is fired, old=multi-UPDATE
|
||||||
|
drop view v1;
|
||||||
|
drop table t1, t2, t1_op_log;
|
||||||
|
|
||||||
|
Bug#27248 Triggers: error if insert affects temporary table
|
||||||
|
|
||||||
|
The bug was fixed by the fix for Bug#26141
|
||||||
|
|
||||||
|
drop table if exists t1;
|
||||||
|
drop temporary table if exists t2;
|
||||||
|
create table t1 (s1 int);
|
||||||
|
create temporary table t2 (s1 int);
|
||||||
|
create trigger t1_bi before insert on t1 for each row insert into t2 values (0);
|
||||||
|
create trigger t1_bd before delete on t1 for each row delete from t2;
|
||||||
|
insert into t1 values (0);
|
||||||
|
insert into t1 values (0);
|
||||||
|
select * from t1;
|
||||||
|
s1
|
||||||
|
0
|
||||||
|
0
|
||||||
|
select * from t2;
|
||||||
|
s1
|
||||||
|
0
|
||||||
|
0
|
||||||
|
delete from t1;
|
||||||
|
select * from t1;
|
||||||
|
s1
|
||||||
|
select * from t2;
|
||||||
|
s1
|
||||||
|
drop table t1;
|
||||||
|
drop temporary table t2;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
drop table if exists table_25411_a;
|
drop table if exists table_25411_a;
|
||||||
drop table if exists table_25411_b;
|
drop table if exists table_25411_b;
|
||||||
|
@ -1809,4 +1809,24 @@ f1
|
|||||||
|
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (c1 ENUM('a', '', 'b'));
|
||||||
|
INSERT INTO t1 (c1) VALUES ('b');
|
||||||
|
INSERT INTO t1 (c1) VALUES ('');
|
||||||
|
INSERT INTO t1 (c1) VALUES (0);
|
||||||
|
Warnings:
|
||||||
|
Warning 1265 Data truncated for column 'c1' at row 1
|
||||||
|
INSERT INTO t1 (c1) VALUES ('');
|
||||||
|
SELECT c1 + 0, COUNT(c1) FROM t1 GROUP BY c1;
|
||||||
|
c1 + 0 COUNT(c1)
|
||||||
|
0 1
|
||||||
|
2 2
|
||||||
|
3 1
|
||||||
|
CREATE TABLE t2 SELECT * FROM t1;
|
||||||
|
SELECT c1 + 0 FROM t2;
|
||||||
|
c1 + 0
|
||||||
|
3
|
||||||
|
2
|
||||||
|
0
|
||||||
|
2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1481,6 +1481,34 @@ drop table t1;
|
|||||||
SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b;
|
SELECT 1.000000000000 * 99.999999999998 / 100 a,1.000000000000 * (99.999999999998 / 100) b;
|
||||||
a b
|
a b
|
||||||
0.9999999999999800000000000000 0.9999999999999800000000000000
|
0.9999999999999800000000000000 0.9999999999999800000000000000
|
||||||
|
SELECT CAST(1 AS decimal(65,10));
|
||||||
|
CAST(1 AS decimal(65,10))
|
||||||
|
1.0000000000
|
||||||
|
SELECT CAST(1 AS decimal(66,10));
|
||||||
|
ERROR 42000: Too big precision 66 specified for column '1'. Maximum is 65.
|
||||||
|
SELECT CAST(1 AS decimal(65,30));
|
||||||
|
CAST(1 AS decimal(65,30))
|
||||||
|
1.000000000000000000000000000000
|
||||||
|
SELECT CAST(1 AS decimal(65,31));
|
||||||
|
ERROR 42000: Too big scale 31 specified for column '1'. Maximum is 30.
|
||||||
|
CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL);
|
||||||
|
INSERT INTO t1 VALUES (3,30), (1,10), (2,10);
|
||||||
|
SELECT a+CAST(1 AS decimal(65,30)) AS aa, SUM(b) FROM t1 GROUP BY aa;
|
||||||
|
aa SUM(b)
|
||||||
|
2.000000000000000000000000000000 10
|
||||||
|
3.000000000000000000000000000000 10
|
||||||
|
4.000000000000000000000000000000 30
|
||||||
|
SELECT a+CAST(1 AS decimal(65,31)) AS aa, SUM(b) FROM t1 GROUP BY aa;
|
||||||
|
ERROR 42000: Too big scale 31 specified for column '1'. Maximum is 30.
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a int DEFAULT NULL, b int DEFAULT NULL);
|
||||||
|
INSERT INTO t1 VALUES (3,30), (1,10), (2,10);
|
||||||
|
SET @a= CAST(1 AS decimal);
|
||||||
|
SELECT 1 FROM t1 GROUP BY @b := @a, @b;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
select cast(143.481 as decimal(4,1));
|
select cast(143.481 as decimal(4,1));
|
||||||
cast(143.481 as decimal(4,1))
|
cast(143.481 as decimal(4,1))
|
||||||
|
@ -208,10 +208,6 @@ options flags
|
|||||||
one one
|
one one
|
||||||
drop table t2;
|
drop table t2;
|
||||||
create table t2 select * from t1;
|
create table t2 select * from t1;
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'options' at row 4
|
|
||||||
Warning 1265 Data truncated for column 'options' at row 5
|
|
||||||
Warning 1265 Data truncated for column 'options' at row 6
|
|
||||||
update t2 set string="changed" where auto=16;
|
update t2 set string="changed" where auto=16;
|
||||||
show full columns from t1;
|
show full columns from t1;
|
||||||
Field Type Collation Null Key Default Extra Privileges Comment
|
Field Type Collation Null Key Default Extra Privileges Comment
|
||||||
|
@ -85,3 +85,46 @@ sec_to_time(time_to_sec(t))
|
|||||||
13:00:00
|
13:00:00
|
||||||
09:00:00
|
09:00:00
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
select cast('100:55:50' as time) < cast('24:00:00' as time);
|
||||||
|
cast('100:55:50' as time) < cast('24:00:00' as time)
|
||||||
|
0
|
||||||
|
select cast('100:55:50' as time) < cast('024:00:00' as time);
|
||||||
|
cast('100:55:50' as time) < cast('024:00:00' as time)
|
||||||
|
0
|
||||||
|
select cast('300:55:50' as time) < cast('240:00:00' as time);
|
||||||
|
cast('300:55:50' as time) < cast('240:00:00' as time)
|
||||||
|
0
|
||||||
|
select cast('100:55:50' as time) > cast('24:00:00' as time);
|
||||||
|
cast('100:55:50' as time) > cast('24:00:00' as time)
|
||||||
|
1
|
||||||
|
select cast('100:55:50' as time) > cast('024:00:00' as time);
|
||||||
|
cast('100:55:50' as time) > cast('024:00:00' as time)
|
||||||
|
1
|
||||||
|
select cast('300:55:50' as time) > cast('240:00:00' as time);
|
||||||
|
cast('300:55:50' as time) > cast('240:00:00' as time)
|
||||||
|
1
|
||||||
|
create table t1 (f1 time);
|
||||||
|
insert into t1 values ('24:00:00');
|
||||||
|
select cast('24:00:00' as time) = (select f1 from t1);
|
||||||
|
cast('24:00:00' as time) = (select f1 from t1)
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
create table t1(f1 time, f2 time);
|
||||||
|
insert into t1 values('20:00:00','150:00:00');
|
||||||
|
select 1 from t1 where cast('100:00:00' as time) between f1 and f2;
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
f2 date NOT NULL,
|
||||||
|
f3 int(11) unsigned NOT NULL default '0',
|
||||||
|
PRIMARY KEY (f3, f2)
|
||||||
|
);
|
||||||
|
insert into t1 values('2007-07-01', 1);
|
||||||
|
insert into t1 values('2007-07-01', 2);
|
||||||
|
insert into t1 values('2007-07-02', 1);
|
||||||
|
insert into t1 values('2007-07-02', 2);
|
||||||
|
SELECT sum(f3) FROM t1 where f2='2007-07-01 00:00:00' group by f2;
|
||||||
|
sum(f3)
|
||||||
|
3
|
||||||
|
drop table t1;
|
||||||
|
@ -101,13 +101,13 @@ create table t1 (t2 timestamp(2), t4 timestamp(4), t6 timestamp(6),
|
|||||||
t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
|
t8 timestamp(8), t10 timestamp(10), t12 timestamp(12),
|
||||||
t14 timestamp(14));
|
t14 timestamp(14));
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1543 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
Warning 1287 The syntax 'TIMESTAMP(2)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||||
Warning 1543 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
Warning 1287 The syntax 'TIMESTAMP(4)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||||
Warning 1543 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
Warning 1287 The syntax 'TIMESTAMP(6)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||||
Warning 1543 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
Warning 1287 The syntax 'TIMESTAMP(8)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||||
Warning 1543 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
Warning 1287 The syntax 'TIMESTAMP(10)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||||
Warning 1543 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
Warning 1287 The syntax 'TIMESTAMP(12)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||||
Warning 1543 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
Warning 1287 The syntax 'TIMESTAMP(14)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead
|
||||||
insert t1 values (0,0,0,0,0,0,0),
|
insert t1 values (0,0,0,0,0,0,0),
|
||||||
("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
|
("1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
|
||||||
"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
|
"1997-12-31 23:47:59", "1997-12-31 23:47:59", "1997-12-31 23:47:59",
|
||||||
|
@ -3497,6 +3497,53 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
person_id int NOT NULL PRIMARY KEY,
|
||||||
|
username varchar(40) default NULL,
|
||||||
|
status_flg char(1) NOT NULL default 'A'
|
||||||
|
);
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
person_role_id int NOT NULL auto_increment PRIMARY KEY,
|
||||||
|
role_id int NOT NULL,
|
||||||
|
person_id int NOT NULL,
|
||||||
|
INDEX idx_person_id (person_id),
|
||||||
|
INDEX idx_role_id (role_id)
|
||||||
|
);
|
||||||
|
CREATE TABLE t3 (
|
||||||
|
role_id int NOT NULL auto_increment PRIMARY KEY,
|
||||||
|
role_name varchar(100) default NULL,
|
||||||
|
app_name varchar(40) NOT NULL,
|
||||||
|
INDEX idx_app_name(app_name)
|
||||||
|
);
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT profile.person_id AS person_id
|
||||||
|
FROM t1 profile, t2 userrole, t3 role
|
||||||
|
WHERE userrole.person_id = profile.person_id AND
|
||||||
|
role.role_id = userrole.role_id AND
|
||||||
|
profile.status_flg = 'A'
|
||||||
|
ORDER BY profile.person_id,role.app_name,role.role_name;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(6,'Sw','A'), (-1136332546,'ols','e'), (0,' *\n','0'),
|
||||||
|
(-717462680,'ENTS Ta','0'), (-904346964,'ndard SQL\n','0');
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(1,3,6),(2,4,7),(3,5,8),(4,6,9),(5,1,6),(6,1,7),(7,1,8),(8,1,9),(9,1,10);
|
||||||
|
INSERT INTO t3 VALUES
|
||||||
|
(1,'NUCANS_APP_USER','NUCANSAPP'),(2,'NUCANS_TRGAPP_USER','NUCANSAPP'),
|
||||||
|
(3,'IA_INTAKE_COORDINATOR','IACANS'),(4,'IA_SCREENER','IACANS'),
|
||||||
|
(5,'IA_SUPERVISOR','IACANS'),(6,'IA_READONLY','IACANS'),
|
||||||
|
(7,'SOC_USER','SOCCANS'),(8,'CAYIT_USER','CAYITCANS'),
|
||||||
|
(9,'RTOS_DCFSPOS_SUPERVISOR','RTOS');
|
||||||
|
EXPLAIN SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE profile const PRIMARY PRIMARY 4 const 1 Using temporary; Using filesort
|
||||||
|
1 SIMPLE userrole ref idx_person_id,idx_role_id idx_person_id 4 const 2
|
||||||
|
1 SIMPLE role eq_ref PRIMARY PRIMARY 4 test.userrole.role_id 1
|
||||||
|
SELECT t.person_id AS a, t.person_id AS b FROM v1 t WHERE t.person_id=6;
|
||||||
|
a b
|
||||||
|
6 6
|
||||||
|
6 6
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
DROP DATABASE IF EXISTS `d-1`;
|
DROP DATABASE IF EXISTS `d-1`;
|
||||||
CREATE DATABASE `d-1`;
|
CREATE DATABASE `d-1`;
|
||||||
|
@ -168,7 +168,7 @@ max_error_count 10
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
set table_type=MYISAM;
|
set table_type=MYISAM;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1543 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead
|
Warning 1287 The syntax 'table_type' is deprecated and will be removed in MySQL 5.2. Please use 'storage_engine' instead
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
insert into t1 (a) values (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||||||
update t1 set a='abc';
|
update t1 set a='abc';
|
||||||
|
2
mysql-test/r/windows_shm.result
Normal file
2
mysql-test/r/windows_shm.result
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
mysqld is alive
|
||||||
|
End of 5.0 tests.
|
@ -647,32 +647,32 @@ select extractValue('<a>a','/a');
|
|||||||
extractValue('<a>a','/a')
|
extractValue('<a>a','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 5: unexpected END-OF-INPUT'
|
||||||
select extractValue('<a>a<','/a');
|
select extractValue('<a>a<','/a');
|
||||||
extractValue('<a>a<','/a')
|
extractValue('<a>a<','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 6: END-OF-INPUT unexpected (ident or '/' wanted)'
|
||||||
select extractValue('<a>a</','/a');
|
select extractValue('<a>a</','/a');
|
||||||
extractValue('<a>a</','/a')
|
extractValue('<a>a</','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 7: END-OF-INPUT unexpected (ident wanted)'
|
||||||
select extractValue('<a>a</a','/a');
|
select extractValue('<a>a</a','/a');
|
||||||
extractValue('<a>a</a','/a')
|
extractValue('<a>a</a','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 8: END-OF-INPUT unexpected ('>' wanted)'
|
||||||
select extractValue('<a>a</a></b>','/a');
|
select extractValue('<a>a</a></b>','/a');
|
||||||
extractValue('<a>a</a></b>','/a')
|
extractValue('<a>a</a></b>','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 12: '</b>' unexpected (END-OF-INPUT wanted)'
|
||||||
select extractValue('<a b=>a</a>','/a');
|
select extractValue('<a b=>a</a>','/a');
|
||||||
extractValue('<a b=>a</a>','/a')
|
extractValue('<a b=>a</a>','/a')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 7: '>' unexpected (ident or string wanted)'
|
||||||
select extractValue('<e>1</e>','position()');
|
select extractValue('<e>1</e>','position()');
|
||||||
ERROR HY000: XPATH syntax error: ''
|
ERROR HY000: XPATH syntax error: ''
|
||||||
select extractValue('<e>1</e>','last()');
|
select extractValue('<e>1</e>','last()');
|
||||||
@ -723,17 +723,17 @@ select extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*
|
|||||||
extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*')
|
extractValue('<zot><tim0><01>10:39:15</01><02>140</02></tim0></zot>','//*')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)'
|
||||||
select extractValue('<.>test</.>','//*');
|
select extractValue('<.>test</.>','//*');
|
||||||
extractValue('<.>test</.>','//*')
|
extractValue('<.>test</.>','//*')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
||||||
select extractValue('<->test</->','//*');
|
select extractValue('<->test</->','//*');
|
||||||
extractValue('<->test</->','//*')
|
extractValue('<->test</->','//*')
|
||||||
NULL
|
NULL
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1513 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
Warning 1522 Incorrect XML value: 'parse error at line 1 pos 2: unknown token unexpected (ident or '/' wanted)'
|
||||||
select extractValue('<:>test</:>','//*');
|
select extractValue('<:>test</:>','//*');
|
||||||
extractValue('<:>test</:>','//*')
|
extractValue('<:>test</:>','//*')
|
||||||
test
|
test
|
||||||
|
1177
mysql-test/suite/binlog/r/binlog_row_binlog.result
Normal file
1177
mysql-test/suite/binlog/r/binlog_row_binlog.result
Normal file
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user