Merge romeo.(none):/home/bkroot/mysql-5.1-rpl
into romeo.(none):/home/bk/merge-mysql-5.1 BitKeeper/etc/ignore: auto-union client/mysql.cc: Auto merged client/mysqlbinlog.cc: Auto merged configure.in: Auto merged client/mysqltest.c: Auto merged mysql-test/r/rpl_ndb_basic.result: Auto merged mysql-test/t/disabled.def: Auto merged sql/CMakeLists.txt: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/ha_ndbcluster.h: Auto merged sql/ha_ndbcluster_binlog.cc: Auto merged sql/log.cc: Auto merged sql/log_event.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/set_var.cc: Auto merged sql/slave.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_insert.cc: Auto merged sql/sql_repl.cc: Auto merged
This commit is contained in:
commit
dadde7fb86
21
.bzrignore
21
.bzrignore
@ -354,6 +354,8 @@ client/decimal.c
|
|||||||
client/insert_test
|
client/insert_test
|
||||||
client/log_event.cc
|
client/log_event.cc
|
||||||
client/log_event.h
|
client/log_event.h
|
||||||
|
client/log_event_old.cc
|
||||||
|
client/log_event_old.h
|
||||||
client/mf_iocache.c
|
client/mf_iocache.c
|
||||||
client/mf_iocache.cc
|
client/mf_iocache.cc
|
||||||
client/my_decimal.cc
|
client/my_decimal.cc
|
||||||
@ -379,6 +381,9 @@ client/mysqltestmanager-pwgen
|
|||||||
client/mysqltestmanagerc
|
client/mysqltestmanagerc
|
||||||
client/mysys_priv.h
|
client/mysys_priv.h
|
||||||
client/readline.cpp
|
client/readline.cpp
|
||||||
|
client/rpl_constants.h
|
||||||
|
client/rpl_record_old.cc
|
||||||
|
client/rpl_record_old.h
|
||||||
client/select_test
|
client/select_test
|
||||||
client/sql_string.cpp
|
client/sql_string.cpp
|
||||||
client/ssl_test
|
client/ssl_test
|
||||||
@ -1087,6 +1092,7 @@ libmysqld/libmysql.c
|
|||||||
libmysqld/lock.cc
|
libmysqld/lock.cc
|
||||||
libmysqld/log.cc
|
libmysqld/log.cc
|
||||||
libmysqld/log_event.cc
|
libmysqld/log_event.cc
|
||||||
|
libmysqld/log_event_old.cc
|
||||||
libmysqld/md5.c
|
libmysqld/md5.c
|
||||||
libmysqld/mf_iocache.cc
|
libmysqld/mf_iocache.cc
|
||||||
libmysqld/mini_client.cc
|
libmysqld/mini_client.cc
|
||||||
@ -1109,6 +1115,8 @@ libmysqld/records.cc
|
|||||||
libmysqld/repl_failsafe.cc
|
libmysqld/repl_failsafe.cc
|
||||||
libmysqld/rpl_filter.cc
|
libmysqld/rpl_filter.cc
|
||||||
libmysqld/rpl_injector.cc
|
libmysqld/rpl_injector.cc
|
||||||
|
libmysqld/rpl_record.cc
|
||||||
|
libmysqld/rpl_record_old.cc
|
||||||
libmysqld/set_var.cc
|
libmysqld/set_var.cc
|
||||||
libmysqld/simple-test
|
libmysqld/simple-test
|
||||||
libmysqld/slave.cc
|
libmysqld/slave.cc
|
||||||
@ -1347,10 +1355,15 @@ mysql-test/suite/funcs_1/r/myisam_trig_03e.warnings
|
|||||||
mysql-test/suite/funcs_1/r/myisam_views.warnings
|
mysql-test/suite/funcs_1/r/myisam_views.warnings
|
||||||
mysql-test/suite/funcs_1/r/ndb_trig_03e.warnings
|
mysql-test/suite/funcs_1/r/ndb_trig_03e.warnings
|
||||||
mysql-test/suite/funcs_1/r/ndb_views.warnings
|
mysql-test/suite/funcs_1/r/ndb_views.warnings
|
||||||
|
mysql-test/suite/partitions/r/dif
|
||||||
mysql-test/suite/partitions/r/diff
|
mysql-test/suite/partitions/r/diff
|
||||||
|
mysql-test/suite/partitions/r/partition.result
|
||||||
mysql-test/suite/partitions/r/partition_bit_ndb.warnings
|
mysql-test/suite/partitions/r/partition_bit_ndb.warnings
|
||||||
mysql-test/suite/partitions/r/partition_special_innodb.warnings
|
mysql-test/suite/partitions/r/partition_special_innodb.warnings
|
||||||
mysql-test/suite/partitions/r/partition_special_myisam.warnings
|
mysql-test/suite/partitions/r/partition_special_myisam.warnings
|
||||||
|
mysql-test/suite/partitions/r/partition_t55.out
|
||||||
|
mysql-test/suite/partitions/r/partition_t55.refout
|
||||||
|
mysql-test/suite/partitions/t/partition.test
|
||||||
mysql-test/t/index_merge.load
|
mysql-test/t/index_merge.load
|
||||||
mysql-test/t/tmp.test
|
mysql-test/t/tmp.test
|
||||||
mysql-test/var
|
mysql-test/var
|
||||||
@ -2956,11 +2969,3 @@ win/vs71cache.txt
|
|||||||
win/vs8cache.txt
|
win/vs8cache.txt
|
||||||
zlib/*.ds?
|
zlib/*.ds?
|
||||||
zlib/*.vcproj
|
zlib/*.vcproj
|
||||||
client/rpl_constants.h
|
|
||||||
client/log_event_old.cc
|
|
||||||
client/log_event_old.h
|
|
||||||
client/rpl_record_old.cc
|
|
||||||
client/rpl_record_old.h
|
|
||||||
libmysqld/log_event_old.cc
|
|
||||||
libmysqld/rpl_record.cc
|
|
||||||
libmysqld/rpl_record_old.cc
|
|
||||||
|
@ -114,6 +114,14 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR
|
|||||||
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG
|
STRING(REPLACE "/MDd" "/MTd" CMAKE_CXX_FLAGS_DEBUG
|
||||||
${CMAKE_CXX_FLAGS_DEBUG})
|
${CMAKE_CXX_FLAGS_DEBUG})
|
||||||
|
|
||||||
|
STRING(REPLACE "/MD" "/MT" CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||||
|
${CMAKE_CXX_FLAGS_RELWITHDEBINFO})
|
||||||
|
STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||||
|
${CMAKE_C_FLAGS_RELWITHDEBINFO})
|
||||||
|
|
||||||
|
# generate .map files
|
||||||
|
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MAP /MAPINFO:EXPORTS")
|
||||||
|
|
||||||
# remove support for Exception handling
|
# remove support for Exception handling
|
||||||
STRING(REPLACE "/GX" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
STRING(REPLACE "/GX" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||||
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
STRING(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||||
|
@ -67,5 +67,5 @@ enum options_client
|
|||||||
OPT_SLAP_POST_QUERY,
|
OPT_SLAP_POST_QUERY,
|
||||||
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID,
|
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID,
|
||||||
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
|
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
|
||||||
OPT_DEBUG_INFO, OPT_COLUMN_TYPES, OPT_WRITE_BINLOG
|
OPT_DEBUG_INFO, OPT_COLUMN_TYPES, OPT_ERROR_LOG_FILE, OPT_WRITE_BINLOG
|
||||||
};
|
};
|
||||||
|
@ -885,14 +885,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
opt_nopager= 1;
|
opt_nopager= 1;
|
||||||
break;
|
break;
|
||||||
case OPT_MYSQL_PROTOCOL:
|
case OPT_MYSQL_PROTOCOL:
|
||||||
{
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
opt->name);
|
||||||
{
|
|
||||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
opt_rehash= 0;
|
opt_rehash= 0;
|
||||||
|
@ -287,15 +287,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case OPT_MYSQL_PROTOCOL:
|
case OPT_MYSQL_PROTOCOL:
|
||||||
{
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
opt->name);
|
||||||
{
|
|
||||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
usage();
|
usage();
|
||||||
|
@ -944,14 +944,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
remote_opt= 1;
|
remote_opt= 1;
|
||||||
break;
|
break;
|
||||||
case OPT_MYSQL_PROTOCOL:
|
case OPT_MYSQL_PROTOCOL:
|
||||||
{
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
opt->name);
|
||||||
{
|
|
||||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case OPT_START_DATETIME:
|
case OPT_START_DATETIME:
|
||||||
start_datetime= convert_str_to_timestamp(start_datetime_str);
|
start_datetime= convert_str_to_timestamp(start_datetime_str);
|
||||||
break;
|
break;
|
||||||
@ -1167,7 +1162,7 @@ could be out of memory");
|
|||||||
}
|
}
|
||||||
if (len < 8 && net->read_pos[0] == 254)
|
if (len < 8 && net->read_pos[0] == 254)
|
||||||
break; // end of data
|
break; // end of data
|
||||||
DBUG_PRINT("info",( "len: %lu, net->read_pos[5]: %d\n",
|
DBUG_PRINT("info",( "len: %lu net->read_pos[5]: %d\n",
|
||||||
len, net->read_pos[5]));
|
len, net->read_pos[5]));
|
||||||
if (!(ev= Log_event::read_log_event((const char*) net->read_pos + 1 ,
|
if (!(ev= Log_event::read_log_event((const char*) net->read_pos + 1 ,
|
||||||
len - 1, &error_msg,
|
len - 1, &error_msg,
|
||||||
@ -1222,6 +1217,18 @@ could be out of memory");
|
|||||||
len= 1; // fake Rotate, so don't increment old_off
|
len= 1; // fake Rotate, so don't increment old_off
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (type == FORMAT_DESCRIPTION_EVENT)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
This could be an fake Format_description_log_event that server
|
||||||
|
(5.0+) automatically sends to a slave on connect, before sending
|
||||||
|
a first event at the requested position. If this is the case,
|
||||||
|
don't increment old_off. Real Format_description_log_event always
|
||||||
|
starts from BIN_LOG_HEADER_SIZE position.
|
||||||
|
*/
|
||||||
|
if (old_off != BIN_LOG_HEADER_SIZE)
|
||||||
|
len= 1; // fake event, don't increment old_off
|
||||||
|
}
|
||||||
if ((error= process_event(print_event_info, ev, old_off)))
|
if ((error= process_event(print_event_info, ev, old_off)))
|
||||||
{
|
{
|
||||||
error= ((error < 0) ? 0 : 1);
|
error= ((error < 0) ? 0 : 1);
|
||||||
@ -1257,7 +1264,7 @@ could be out of memory");
|
|||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
Let's adjust offset for remote log as for local log to produce
|
Let's adjust offset for remote log as for local log to produce
|
||||||
similar text.
|
similar text and to have --stop-position to work identically.
|
||||||
*/
|
*/
|
||||||
old_off+= len-1;
|
old_off+= len-1;
|
||||||
}
|
}
|
||||||
|
@ -315,15 +315,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
case 'V': print_version(); exit(0);
|
case 'V': print_version(); exit(0);
|
||||||
case OPT_MYSQL_PROTOCOL:
|
case OPT_MYSQL_PROTOCOL:
|
||||||
{
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
opt->name);
|
||||||
{
|
|
||||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,8 @@ static char *opt_password=0,*current_user=0,
|
|||||||
*lines_terminated=0, *enclosed=0, *opt_enclosed=0, *escaped=0,
|
*lines_terminated=0, *enclosed=0, *opt_enclosed=0, *escaped=0,
|
||||||
*where=0, *order_by=0,
|
*where=0, *order_by=0,
|
||||||
*opt_compatible_mode_str= 0,
|
*opt_compatible_mode_str= 0,
|
||||||
*err_ptr= 0;
|
*err_ptr= 0,
|
||||||
|
*log_error_file= NULL;
|
||||||
static char **defaults_argv= 0;
|
static char **defaults_argv= 0;
|
||||||
static char compatible_mode_normal_str[255];
|
static char compatible_mode_normal_str[255];
|
||||||
static ulong opt_compatible_mode= 0;
|
static ulong opt_compatible_mode= 0;
|
||||||
@ -121,6 +122,8 @@ static int first_error=0;
|
|||||||
static DYNAMIC_STRING extended_row;
|
static DYNAMIC_STRING extended_row;
|
||||||
#include <sslopt-vars.h>
|
#include <sslopt-vars.h>
|
||||||
FILE *md_result_file= 0;
|
FILE *md_result_file= 0;
|
||||||
|
FILE *stderror_file=0;
|
||||||
|
|
||||||
#ifdef HAVE_SMEM
|
#ifdef HAVE_SMEM
|
||||||
static char *shared_memory_base_name=0;
|
static char *shared_memory_base_name=0;
|
||||||
#endif
|
#endif
|
||||||
@ -320,6 +323,9 @@ static struct my_option my_long_options[] =
|
|||||||
0, 0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0, 0},
|
||||||
{"lock-tables", 'l', "Lock all tables for read.", (gptr*) &lock_tables,
|
{"lock-tables", 'l', "Lock all tables for read.", (gptr*) &lock_tables,
|
||||||
(gptr*) &lock_tables, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
|
(gptr*) &lock_tables, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
|
||||||
|
{"log-error", OPT_ERROR_LOG_FILE, "Append warnings and errors to given file.",
|
||||||
|
(gptr*) &log_error_file, (gptr*) &log_error_file, 0, GET_STR,
|
||||||
|
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"master-data", OPT_MASTER_DATA,
|
{"master-data", OPT_MASTER_DATA,
|
||||||
"This causes the binary log position and filename to be appended to the "
|
"This causes the binary log position and filename to be appended to the "
|
||||||
"output. If equal to 1, will print it as a CHANGE MASTER command; if equal"
|
"output. If equal to 1, will print it as a CHANGE MASTER command; if equal"
|
||||||
@ -801,15 +807,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case (int) OPT_MYSQL_PROTOCOL:
|
case (int) OPT_MYSQL_PROTOCOL:
|
||||||
{
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
opt->name);
|
||||||
{
|
|
||||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4210,6 +4211,16 @@ int main(int argc, char **argv)
|
|||||||
free_resources(0);
|
free_resources(0);
|
||||||
exit(exit_code);
|
exit(exit_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (log_error_file)
|
||||||
|
{
|
||||||
|
if(!(stderror_file= freopen(log_error_file, "a+", stderr)))
|
||||||
|
{
|
||||||
|
free_resources(0);
|
||||||
|
exit(EX_MYSQLERR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (connect_to_db(current_host, current_user, opt_password))
|
if (connect_to_db(current_host, current_user, opt_password))
|
||||||
{
|
{
|
||||||
free_resources(0);
|
free_resources(0);
|
||||||
@ -4273,5 +4284,9 @@ err:
|
|||||||
if (!path)
|
if (!path)
|
||||||
write_footer(md_result_file);
|
write_footer(md_result_file);
|
||||||
free_resources();
|
free_resources();
|
||||||
|
|
||||||
|
if (stderror_file)
|
||||||
|
fclose(stderror_file);
|
||||||
|
|
||||||
return(first_error);
|
return(first_error);
|
||||||
} /* main */
|
} /* main */
|
||||||
|
@ -231,14 +231,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case OPT_MYSQL_PROTOCOL:
|
case OPT_MYSQL_PROTOCOL:
|
||||||
{
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
opt->name);
|
||||||
{
|
|
||||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||||
break;
|
break;
|
||||||
|
@ -287,14 +287,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case OPT_MYSQL_PROTOCOL:
|
case OPT_MYSQL_PROTOCOL:
|
||||||
{
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
opt->name);
|
||||||
{
|
|
||||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||||
break;
|
break;
|
||||||
|
@ -689,14 +689,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case OPT_MYSQL_PROTOCOL:
|
case OPT_MYSQL_PROTOCOL:
|
||||||
{
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
opt->name);
|
||||||
{
|
|
||||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
case '#':
|
case '#':
|
||||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||||
break;
|
break;
|
||||||
|
@ -2498,17 +2498,20 @@ wait_for_position:
|
|||||||
if (!(res= mysql_store_result(mysql)))
|
if (!(res= mysql_store_result(mysql)))
|
||||||
die("mysql_store_result() returned NULL for '%s'", query_buf);
|
die("mysql_store_result() returned NULL for '%s'", query_buf);
|
||||||
if (!(row= mysql_fetch_row(res)))
|
if (!(row= mysql_fetch_row(res)))
|
||||||
|
{
|
||||||
|
mysql_free_result(res);
|
||||||
die("empty result in %s", query_buf);
|
die("empty result in %s", query_buf);
|
||||||
|
}
|
||||||
if (!row[0])
|
if (!row[0])
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
It may be that the slave SQL thread has not started yet, though START
|
It may be that the slave SQL thread has not started yet, though START
|
||||||
SLAVE has been issued ?
|
SLAVE has been issued ?
|
||||||
*/
|
*/
|
||||||
|
mysql_free_result(res);
|
||||||
if (tries++ == 30)
|
if (tries++ == 30)
|
||||||
die("could not sync with master ('%s' returned NULL)", query_buf);
|
die("could not sync with master ('%s' returned NULL)", query_buf);
|
||||||
sleep(1); /* So at most we will wait 30 seconds and make 31 tries */
|
sleep(1); /* So at most we will wait 30 seconds and make 31 tries */
|
||||||
mysql_free_result(res);
|
|
||||||
goto wait_for_position;
|
goto wait_for_position;
|
||||||
}
|
}
|
||||||
mysql_free_result(res);
|
mysql_free_result(res);
|
||||||
@ -2549,6 +2552,7 @@ int do_save_master_pos()
|
|||||||
MYSQL *mysql = &cur_con->mysql;
|
MYSQL *mysql = &cur_con->mysql;
|
||||||
const char *query;
|
const char *query;
|
||||||
int rpl_parse;
|
int rpl_parse;
|
||||||
|
DBUG_ENTER("do_save_master_pos");
|
||||||
|
|
||||||
rpl_parse = mysql_rpl_parse_enabled(mysql);
|
rpl_parse = mysql_rpl_parse_enabled(mysql);
|
||||||
mysql_disable_rpl_parse(mysql);
|
mysql_disable_rpl_parse(mysql);
|
||||||
@ -2706,7 +2710,7 @@ int do_save_master_pos()
|
|||||||
if (rpl_parse)
|
if (rpl_parse)
|
||||||
mysql_enable_rpl_parse(mysql);
|
mysql_enable_rpl_parse(mysql);
|
||||||
|
|
||||||
return 0;
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3161,7 +3165,7 @@ struct st_connection * find_connection_by_name(const char *name)
|
|||||||
|
|
||||||
int select_connection_name(const char *name)
|
int select_connection_name(const char *name)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("select_connection2");
|
DBUG_ENTER("select_connection_name");
|
||||||
DBUG_PRINT("enter",("name: '%s'", name));
|
DBUG_PRINT("enter",("name: '%s'", name));
|
||||||
|
|
||||||
if (!(cur_con= find_connection_by_name(name)))
|
if (!(cur_con= find_connection_by_name(name)))
|
||||||
@ -3184,7 +3188,7 @@ int select_connection(struct st_command *command)
|
|||||||
if (*p)
|
if (*p)
|
||||||
*p++= 0;
|
*p++= 0;
|
||||||
command->last_argument= p;
|
command->last_argument= p;
|
||||||
return select_connection_name(name);
|
DBUG_RETURN(select_connection_name(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -663,3 +663,27 @@ esac
|
|||||||
AC_SUBST(AR)
|
AC_SUBST(AR)
|
||||||
AC_SUBST(ARFLAGS)
|
AC_SUBST(ARFLAGS)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl Macro to check time_t range: according to C standard
|
||||||
|
dnl array index must be greater than 0 => if time_t is signed,
|
||||||
|
dnl the code in the macros below won't compile.
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_DEFUN([MYSQL_CHECK_TIME_T],[
|
||||||
|
AC_MSG_CHECKING(if time_t is unsigned)
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
|
[[
|
||||||
|
#include <time.h>
|
||||||
|
]],
|
||||||
|
[[
|
||||||
|
int array[(((time_t)-1) > 0) ? 1 : -1];
|
||||||
|
]] )
|
||||||
|
], [
|
||||||
|
AC_DEFINE([TIME_T_UNSIGNED], 1, [Define to 1 if time_t is unsigned])
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT(no)]
|
||||||
|
)
|
||||||
|
])
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@ dnl Define zlib paths to point at bundled zlib
|
|||||||
|
|
||||||
AC_DEFUN([MYSQL_USE_BUNDLED_ZLIB], [
|
AC_DEFUN([MYSQL_USE_BUNDLED_ZLIB], [
|
||||||
ZLIB_INCLUDES="-I\$(top_srcdir)/zlib"
|
ZLIB_INCLUDES="-I\$(top_srcdir)/zlib"
|
||||||
ZLIB_LIBS="\$(top_builddir)/zlib/libz.la"
|
ZLIB_LIBS="\$(top_builddir)/zlib/libzlt.la"
|
||||||
dnl Omit -L$pkglibdir as it's always in the list of mysql_config deps.
|
dnl Omit -L$pkglibdir as it's always in the list of mysql_config deps.
|
||||||
ZLIB_DEPS="-lz"
|
ZLIB_DEPS="-lz"
|
||||||
zlib_dir="zlib"
|
zlib_dir="zlib"
|
||||||
@ -10,16 +10,25 @@ AC_SUBST([zlib_dir])
|
|||||||
mysql_cv_compress="yes"
|
mysql_cv_compress="yes"
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl Auxiliary macro to check for zlib at given path
|
dnl Auxiliary macro to check for zlib at given path.
|
||||||
|
dnl We are strict with the server, as "archive" engine
|
||||||
|
dnl needs zlibCompileFlags(), but for client only we
|
||||||
|
dnl are less strict, and take the zlib we find.
|
||||||
|
|
||||||
AC_DEFUN([MYSQL_CHECK_ZLIB_DIR], [
|
AC_DEFUN([MYSQL_CHECK_ZLIB_DIR], [
|
||||||
save_CPPFLAGS="$CPPFLAGS"
|
save_CPPFLAGS="$CPPFLAGS"
|
||||||
save_LIBS="$LIBS"
|
save_LIBS="$LIBS"
|
||||||
CPPFLAGS="$ZLIB_INCLUDES $CPPFLAGS"
|
CPPFLAGS="$ZLIB_INCLUDES $CPPFLAGS"
|
||||||
LIBS="$LIBS $ZLIB_LIBS"
|
LIBS="$LIBS $ZLIB_LIBS"
|
||||||
|
if test X"$with_server" = Xno
|
||||||
|
then
|
||||||
|
zlibsym=zlibVersion
|
||||||
|
else
|
||||||
|
zlibsym=zlibCompileFlags
|
||||||
|
fi
|
||||||
AC_CACHE_VAL([mysql_cv_compress],
|
AC_CACHE_VAL([mysql_cv_compress],
|
||||||
[AC_TRY_LINK([#include <zlib.h>],
|
[AC_TRY_LINK([#include <zlib.h>],
|
||||||
[return zlibCompileFlags();],
|
[return $zlibsym();],
|
||||||
[mysql_cv_compress="yes"
|
[mysql_cv_compress="yes"
|
||||||
AC_MSG_RESULT([ok])],
|
AC_MSG_RESULT([ok])],
|
||||||
[mysql_cv_compress="no"])
|
[mysql_cv_compress="no"])
|
||||||
|
@ -24,7 +24,7 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
|
|||||||
# Remember that regexps needs to quote [ and ] since this is run through m4
|
# Remember that regexps needs to quote [ and ] since this is run through m4
|
||||||
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"`
|
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"`
|
||||||
MYSQL_BASE_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|\.[[^.]]*$||"`
|
MYSQL_BASE_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|\.[[^.]]*$||"`
|
||||||
MYSQL_VERSION_ID=`echo $MYSQL_NO_DASH_VERSION. | sed -e 's/[[^0-9.]]//g; s/\./ /g; s/ \([[0-9]]\) / 0\\1 /g; s/ //g'`
|
MYSQL_VERSION_ID=`echo $MYSQL_NO_DASH_VERSION | sed -e 's|[[^0-9.]].*$||;s|$|.|' | sed -e 's/[[^0-9.]]//g; s/\./ /g; s/ \([[0-9]]\) / 0\\1 /g; s/ //g'`
|
||||||
|
|
||||||
# The port should be constant for a LONG time
|
# The port should be constant for a LONG time
|
||||||
MYSQL_TCP_PORT_DEFAULT=3306
|
MYSQL_TCP_PORT_DEFAULT=3306
|
||||||
|
@ -95,6 +95,7 @@ extern const char *client_errors[]; /* Error messages */
|
|||||||
#define CR_NO_RESULT_SET 2053
|
#define CR_NO_RESULT_SET 2053
|
||||||
#define CR_NOT_IMPLEMENTED 2054
|
#define CR_NOT_IMPLEMENTED 2054
|
||||||
#define CR_SERVER_LOST_EXTENDED 2055
|
#define CR_SERVER_LOST_EXTENDED 2055
|
||||||
#define CR_ERROR_LAST /*Copy last error nr:*/ 2055
|
#define CR_STMT_CLOSED 2056
|
||||||
|
#define CR_ERROR_LAST /*Copy last error nr:*/ 2056
|
||||||
/* Add error numbers before CR_ERROR_LAST and change it accordingly. */
|
/* Add error numbers before CR_ERROR_LAST and change it accordingly. */
|
||||||
|
|
||||||
|
@ -51,8 +51,6 @@ typedef long my_time_t;
|
|||||||
|
|
||||||
/* two-digit years < this are 20..; >= this are 19.. */
|
/* two-digit years < this are 20..; >= this are 19.. */
|
||||||
#define YY_PART_YEAR 70
|
#define YY_PART_YEAR 70
|
||||||
/* apply above magic to years < this */
|
|
||||||
#define YY_MAGIC_BELOW 200
|
|
||||||
|
|
||||||
/* Flags to str_to_datetime */
|
/* Flags to str_to_datetime */
|
||||||
#define TIME_FUZZY_DATE 1
|
#define TIME_FUZZY_DATE 1
|
||||||
@ -95,6 +93,7 @@ int check_time_range(struct st_mysql_time *, int *warning);
|
|||||||
|
|
||||||
long calc_daynr(uint year,uint month,uint day);
|
long calc_daynr(uint year,uint month,uint day);
|
||||||
uint calc_days_in_year(uint year);
|
uint calc_days_in_year(uint year);
|
||||||
|
uint year_2000_handling(uint year);
|
||||||
|
|
||||||
void init_time(void);
|
void init_time(void);
|
||||||
|
|
||||||
|
@ -26,8 +26,9 @@ typedef struct st_typelib { /* Different types saved here */
|
|||||||
unsigned int *type_lengths;
|
unsigned int *type_lengths;
|
||||||
} TYPELIB;
|
} TYPELIB;
|
||||||
|
|
||||||
extern int find_type(char *x, const TYPELIB *typelib,
|
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
|
||||||
unsigned int full_name);
|
const char *option);
|
||||||
|
extern int find_type(char *x, const TYPELIB *typelib, unsigned int full_name);
|
||||||
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
|
extern void make_type(char *to,unsigned int nr,TYPELIB *typelib);
|
||||||
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
|
extern const char *get_type(TYPELIB *typelib,unsigned int nr);
|
||||||
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
|
extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from);
|
||||||
|
@ -41,7 +41,7 @@ my_bool handle_local_infile(MYSQL *mysql, const char *net_filename);
|
|||||||
|
|
||||||
void mysql_read_default_options(struct st_mysql_options *options,
|
void mysql_read_default_options(struct st_mysql_options *options,
|
||||||
const char *filename,const char *group);
|
const char *filename,const char *group);
|
||||||
void mysql_detach_stmt_list(LIST **stmt_list);
|
void mysql_detach_stmt_list(LIST **stmt_list, const char *func_name);
|
||||||
MYSQL *
|
MYSQL *
|
||||||
cli_mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
cli_mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||||
const char *passwd, const char *db,
|
const char *passwd, const char *db,
|
||||||
|
@ -83,6 +83,7 @@ const char *client_errors[]=
|
|||||||
"Attempt to read a row while there is no result set associated with the statement",
|
"Attempt to read a row while there is no result set associated with the statement",
|
||||||
"This feature is not implemented yet",
|
"This feature is not implemented yet",
|
||||||
"Lost connection to MySQL server at '%s', system error: %d",
|
"Lost connection to MySQL server at '%s', system error: %d",
|
||||||
|
"Statement closed indirectly because of a preceeding %s() call",
|
||||||
""
|
""
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -147,6 +148,7 @@ const char *client_errors[]=
|
|||||||
"Attempt to read a row while there is no result set associated with the statement",
|
"Attempt to read a row while there is no result set associated with the statement",
|
||||||
"This feature is not implemented yet",
|
"This feature is not implemented yet",
|
||||||
"Lost connection to MySQL server at '%s', system error: %d",
|
"Lost connection to MySQL server at '%s', system error: %d",
|
||||||
|
"Statement closed indirectly because of a preceeding %s() call",
|
||||||
""
|
""
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -209,6 +211,7 @@ const char *client_errors[]=
|
|||||||
"Attempt to read a row while there is no result set associated with the statement",
|
"Attempt to read a row while there is no result set associated with the statement",
|
||||||
"This feature is not implemented yet",
|
"This feature is not implemented yet",
|
||||||
"Lost connection to MySQL server at '%s', system error: %d",
|
"Lost connection to MySQL server at '%s', system error: %d",
|
||||||
|
"Statement closed indirectly because of a preceeding %s() call",
|
||||||
""
|
""
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -715,7 +715,7 @@ my_bool STDCALL mysql_change_user(MYSQL *mysql, const char *user,
|
|||||||
The server will close all statements no matter was the attempt
|
The server will close all statements no matter was the attempt
|
||||||
to change user successful or not.
|
to change user successful or not.
|
||||||
*/
|
*/
|
||||||
mysql_detach_stmt_list(&mysql->stmts);
|
mysql_detach_stmt_list(&mysql->stmts, "mysql_change_user");
|
||||||
if (rc == 0)
|
if (rc == 0)
|
||||||
{
|
{
|
||||||
/* Free old connect information */
|
/* Free old connect information */
|
||||||
@ -2872,7 +2872,7 @@ int STDCALL mysql_stmt_execute(MYSQL_STMT *stmt)
|
|||||||
|
|
||||||
if (!mysql)
|
if (!mysql)
|
||||||
{
|
{
|
||||||
set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate);
|
/* Error is already set in mysql_detatch_stmt_list */
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,9 @@
|
|||||||
# Requires statement logging
|
# Requires statement logging
|
||||||
-- source include/master-slave.inc
|
-- source include/master-slave.inc
|
||||||
|
|
||||||
|
# We have to sync with master, to ensure slave had time to start properly
|
||||||
|
# before we stop it. If not, we get errors about UNIX_TIMESTAMP() in the log.
|
||||||
|
sync_slave_with_master;
|
||||||
connection slave;
|
connection slave;
|
||||||
stop slave;
|
stop slave;
|
||||||
connection master;
|
connection master;
|
||||||
|
@ -10,6 +10,10 @@
|
|||||||
|
|
||||||
-- source include/master-slave.inc
|
-- source include/master-slave.inc
|
||||||
|
|
||||||
|
# We have to sync with master, to ensure slave had time to start properly
|
||||||
|
# before we stop it. If not, we get errors about UNIX_TIMESTAMP() in the log.
|
||||||
|
connection master;
|
||||||
|
sync_slave_with_master;
|
||||||
connection slave;
|
connection slave;
|
||||||
stop slave;
|
stop slave;
|
||||||
connection master;
|
connection master;
|
||||||
|
@ -5,6 +5,11 @@ source ./include/master-slave.inc;
|
|||||||
|
|
||||||
# remote table creation
|
# remote table creation
|
||||||
|
|
||||||
|
# We have to sync with master, to ensure slave had time to start properly
|
||||||
|
# before we stop it. If not, we get errors about UNIX_TIMESTAMP() in the log.
|
||||||
|
connection master;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
#--replicate-ignore-db=federated
|
#--replicate-ignore-db=federated
|
||||||
stop slave;
|
stop slave;
|
||||||
|
@ -2,10 +2,8 @@ connection master;
|
|||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
DROP DATABASE IF EXISTS federated;
|
DROP DATABASE IF EXISTS federated;
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
--disable_warnings
|
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
DROP DATABASE IF EXISTS federated;
|
DROP DATABASE IF EXISTS federated;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-- require r/not_embedded.require
|
-- require r/not_embedded.require
|
||||||
disable_query_log;
|
disable_query_log;
|
||||||
select version() like N'%embedded%' as 'have_embedded';
|
select version() like '%embedded%' as 'have_embedded';
|
||||||
enable_query_log;
|
enable_query_log;
|
||||||
|
|
||||||
|
@ -534,7 +534,7 @@ sub collect_one_test_case($$$$$$$) {
|
|||||||
! ( $tinfo->{'binlog_format'} eq $::used_binlog_format ) )
|
! ( $tinfo->{'binlog_format'} eq $::used_binlog_format ) )
|
||||||
{
|
{
|
||||||
$tinfo->{'skip'}= 1;
|
$tinfo->{'skip'}= 1;
|
||||||
$tinfo->{'comment'}= "Not running with binlog format '$tinfo->{'binlog_format'}'";
|
$tinfo->{'comment'}= "Requiring binlog format '$tinfo->{'binlog_format'}'";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -599,7 +599,7 @@ our @tags=
|
|||||||
(
|
(
|
||||||
["include/have_innodb.inc", "innodb_test", 1],
|
["include/have_innodb.inc", "innodb_test", 1],
|
||||||
["include/have_binlog_format_row.inc", "binlog_format", "row"],
|
["include/have_binlog_format_row.inc", "binlog_format", "row"],
|
||||||
["include/have_binlog_format_statement.inc", "binlog_format", "stmt"],
|
["include/have_binlog_format_statement.inc", "binlog_format", "statement"],
|
||||||
["include/have_binlog_format_mixed.inc", "binlog_format", "mixed"],
|
["include/have_binlog_format_mixed.inc", "binlog_format", "mixed"],
|
||||||
["include/big_test.inc", "big_test", 1],
|
["include/big_test.inc", "big_test", 1],
|
||||||
["include/have_debug.inc", "need_debug", 1],
|
["include/have_debug.inc", "need_debug", 1],
|
||||||
|
@ -3278,9 +3278,9 @@ sub do_after_run_mysqltest($)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub run_testcase_mark_logs($)
|
sub run_testcase_mark_logs($$)
|
||||||
{
|
{
|
||||||
my ($log_msg)= @_;
|
my ($tinfo, $log_msg)= @_;
|
||||||
|
|
||||||
# Write a marker to all log files
|
# Write a marker to all log files
|
||||||
|
|
||||||
@ -3293,6 +3293,12 @@ sub run_testcase_mark_logs($)
|
|||||||
mtr_tofile($mysqld->{path_myerr}, $log_msg);
|
mtr_tofile($mysqld->{path_myerr}, $log_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $tinfo->{'component_id'} eq 'im')
|
||||||
|
{
|
||||||
|
mtr_tofile($instance_manager->{path_err}, $log_msg);
|
||||||
|
mtr_tofile($instance_manager->{path_log}, $log_msg);
|
||||||
|
}
|
||||||
|
|
||||||
# ndbcluster log file
|
# ndbcluster log file
|
||||||
mtr_tofile($path_ndb_testrun_log, $log_msg);
|
mtr_tofile($path_ndb_testrun_log, $log_msg);
|
||||||
|
|
||||||
@ -3419,7 +3425,7 @@ sub run_testcase ($) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Write to all log files to indicate start of testcase
|
# Write to all log files to indicate start of testcase
|
||||||
run_testcase_mark_logs("CURRENT_TEST: $tinfo->{name}\n");
|
run_testcase_mark_logs($tinfo, "CURRENT_TEST: $tinfo->{name}\n");
|
||||||
|
|
||||||
my $died= mtr_record_dead_children();
|
my $died= mtr_record_dead_children();
|
||||||
if ($died or $master_restart or $slave_restart)
|
if ($died or $master_restart or $slave_restart)
|
||||||
@ -3493,7 +3499,7 @@ sub run_testcase ($) {
|
|||||||
# Stop Instance Manager if we are processing an IM-test case.
|
# Stop Instance Manager if we are processing an IM-test case.
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
if ( $tinfo->{'component_id'} eq 'im' and
|
if ( $tinfo->{'component_id'} eq 'im' and
|
||||||
!mtr_im_stop($instance_manager, $tinfo->{'name'}) )
|
!mtr_im_stop($instance_manager, $tinfo->{'name'}))
|
||||||
{
|
{
|
||||||
mtr_error("Failed to stop Instance Manager.")
|
mtr_error("Failed to stop Instance Manager.")
|
||||||
}
|
}
|
||||||
|
@ -3,13 +3,13 @@ set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
|
|||||||
insert delayed into t1 values (207);
|
insert delayed into t1 values (207);
|
||||||
insert delayed into t1 values (null);
|
insert delayed into t1 values (null);
|
||||||
insert delayed into t1 values (300);
|
insert delayed into t1 values (300);
|
||||||
show binlog events from 102;
|
show binlog events from <binlog_start>;
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
||||||
master-bin.000001 # Query 1 # use `test`; insert delayed into t1 values (207)
|
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (207)
|
||||||
master-bin.000001 # Intvar 1 # INSERT_ID=208
|
master-bin.000001 # Intvar # # INSERT_ID=208
|
||||||
master-bin.000001 # Query 1 # use `test`; insert delayed into t1 values (null)
|
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (null)
|
||||||
master-bin.000001 # Query 1 # use `test`; insert delayed into t1 values (300)
|
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (300)
|
||||||
insert delayed into t1 values (null),(null),(null),(null);
|
insert delayed into t1 values (null),(null),(null),(null);
|
||||||
insert delayed into t1 values (null),(null),(400),(null);
|
insert delayed into t1 values (null),(null),(400),(null);
|
||||||
11 == 11
|
11 == 11
|
||||||
|
@ -91,6 +91,8 @@ create table t1 (date char(30), format char(30) not null);
|
|||||||
insert into t1 values
|
insert into t1 values
|
||||||
('2003-01-02 10:11:12', '%Y-%m-%d %H:%i:%S'),
|
('2003-01-02 10:11:12', '%Y-%m-%d %H:%i:%S'),
|
||||||
('03-01-02 8:11:2.123456', '%y-%m-%d %H:%i:%S.%#'),
|
('03-01-02 8:11:2.123456', '%y-%m-%d %H:%i:%S.%#'),
|
||||||
|
('0003-01-02 8:11:2.123456', '%Y-%m-%d %H:%i:%S.%#'),
|
||||||
|
('03-01-02 8:11:2.123456', '%Y-%m-%d %H:%i:%S.%#'),
|
||||||
('2003-01-02 10:11:12 PM', '%Y-%m-%d %h:%i:%S %p'),
|
('2003-01-02 10:11:12 PM', '%Y-%m-%d %h:%i:%S %p'),
|
||||||
('2003-01-02 01:11:12.12345AM', '%Y-%m-%d %h:%i:%S.%f%p'),
|
('2003-01-02 01:11:12.12345AM', '%Y-%m-%d %h:%i:%S.%f%p'),
|
||||||
('2003-01-02 02:11:12.12345AM', '%Y-%m-%d %h:%i:%S.%f %p'),
|
('2003-01-02 02:11:12.12345AM', '%Y-%m-%d %h:%i:%S.%f %p'),
|
||||||
@ -122,6 +124,8 @@ select date,format,str_to_date(date, format) as str_to_date from t1;
|
|||||||
date format str_to_date
|
date format str_to_date
|
||||||
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 2003-01-02 10:11:12
|
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 2003-01-02 10:11:12
|
||||||
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
||||||
|
0003-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 0003-01-02 08:11:02
|
||||||
|
03-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
||||||
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02 22:11:12
|
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02 22:11:12
|
||||||
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 2003-01-02 01:11:12.123450
|
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 2003-01-02 01:11:12.123450
|
||||||
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 2003-01-02 02:11:12.123450
|
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 2003-01-02 02:11:12.123450
|
||||||
@ -153,6 +157,8 @@ select date,format,concat('',str_to_date(date, format)) as con from t1;
|
|||||||
date format con
|
date format con
|
||||||
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 2003-01-02 10:11:12
|
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 2003-01-02 10:11:12
|
||||||
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
||||||
|
0003-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 0003-01-02 08:11:02
|
||||||
|
03-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
||||||
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02 22:11:12
|
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02 22:11:12
|
||||||
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 2003-01-02 01:11:12.123450
|
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 2003-01-02 01:11:12.123450
|
||||||
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 2003-01-02 02:11:12.123450
|
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 2003-01-02 02:11:12.123450
|
||||||
@ -184,6 +190,8 @@ select date,format,cast(str_to_date(date, format) as datetime) as datetime from
|
|||||||
date format datetime
|
date format datetime
|
||||||
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 2003-01-02 10:11:12
|
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 2003-01-02 10:11:12
|
||||||
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
||||||
|
0003-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 0003-01-02 08:11:02
|
||||||
|
03-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 2003-01-02 08:11:02
|
||||||
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02 22:11:12
|
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02 22:11:12
|
||||||
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 2003-01-02 01:11:12.123450
|
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 2003-01-02 01:11:12.123450
|
||||||
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 2003-01-02 02:11:12.123450
|
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 2003-01-02 02:11:12.123450
|
||||||
@ -215,6 +223,8 @@ select date,format,DATE(str_to_date(date, format)) as date2 from t1;
|
|||||||
date format date2
|
date format date2
|
||||||
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 2003-01-02
|
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 2003-01-02
|
||||||
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 2003-01-02
|
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 2003-01-02
|
||||||
|
0003-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 0003-01-02
|
||||||
|
03-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 2003-01-02
|
||||||
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02
|
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02
|
||||||
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 2003-01-02
|
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 2003-01-02
|
||||||
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 2003-01-02
|
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 2003-01-02
|
||||||
@ -246,6 +256,8 @@ select date,format,TIME(str_to_date(date, format)) as time from t1;
|
|||||||
date format time
|
date format time
|
||||||
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 10:11:12
|
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 10:11:12
|
||||||
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 08:11:02
|
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 08:11:02
|
||||||
|
0003-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 08:11:02
|
||||||
|
03-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 08:11:02
|
||||||
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 22:11:12
|
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 22:11:12
|
||||||
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 01:11:12.123450
|
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 01:11:12.123450
|
||||||
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 02:11:12.123450
|
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 02:11:12.123450
|
||||||
@ -277,6 +289,8 @@ select date,format,concat(TIME(str_to_date(date, format))) as time2 from t1;
|
|||||||
date format time2
|
date format time2
|
||||||
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 10:11:12
|
2003-01-02 10:11:12 %Y-%m-%d %H:%i:%S 10:11:12
|
||||||
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 08:11:02
|
03-01-02 8:11:2.123456 %y-%m-%d %H:%i:%S.%# 08:11:02
|
||||||
|
0003-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 08:11:02
|
||||||
|
03-01-02 8:11:2.123456 %Y-%m-%d %H:%i:%S.%# 08:11:02
|
||||||
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 22:11:12
|
2003-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 22:11:12
|
||||||
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 01:11:12.123450
|
2003-01-02 01:11:12.12345AM %Y-%m-%d %h:%i:%S.%f%p 01:11:12.123450
|
||||||
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 02:11:12.123450
|
2003-01-02 02:11:12.12345AM %Y-%m-%d %h:%i:%S.%f %p 02:11:12.123450
|
||||||
@ -402,14 +416,14 @@ select date,format,str_to_date(date, format) as str_to_date from t1;
|
|||||||
date format str_to_date
|
date format str_to_date
|
||||||
10:20:10AM %h:%i:%s 0000-00-00 10:20:10
|
10:20:10AM %h:%i:%s 0000-00-00 10:20:10
|
||||||
2003-01-02 10:11:12 %Y-%m-%d %h:%i:%S 2003-01-02 10:11:12
|
2003-01-02 10:11:12 %Y-%m-%d %h:%i:%S 2003-01-02 10:11:12
|
||||||
03-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 0003-01-02 22:11:12
|
03-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02 22:11:12
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Incorrect datetime value: '10:20:10AM'
|
Warning 1292 Incorrect datetime value: '10:20:10AM'
|
||||||
select date,format,concat(str_to_date(date, format),'') as con from t1;
|
select date,format,concat(str_to_date(date, format),'') as con from t1;
|
||||||
date format con
|
date format con
|
||||||
10:20:10AM %h:%i:%s 0000-00-00 10:20:10
|
10:20:10AM %h:%i:%s 0000-00-00 10:20:10
|
||||||
2003-01-02 10:11:12 %Y-%m-%d %h:%i:%S 2003-01-02 10:11:12
|
2003-01-02 10:11:12 %Y-%m-%d %h:%i:%S 2003-01-02 10:11:12
|
||||||
03-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 0003-01-02 22:11:12
|
03-01-02 10:11:12 PM %Y-%m-%d %h:%i:%S %p 2003-01-02 22:11:12
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Incorrect datetime value: '10:20:10AM'
|
Warning 1292 Incorrect datetime value: '10:20:10AM'
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -668,3 +668,17 @@ NULL
|
|||||||
3
|
3
|
||||||
4
|
4
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT, b INT);
|
||||||
|
INSERT INTO t1 VALUES(1,1),(1,2),(1,3);
|
||||||
|
SELECT DISTINCT a, b FROM t1;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
1 2
|
||||||
|
1 3
|
||||||
|
SELECT DISTINCT a, a, b FROM t1;
|
||||||
|
a a b
|
||||||
|
1 1 1
|
||||||
|
1 1 2
|
||||||
|
1 1 3
|
||||||
|
DROP TABLE t1;
|
||||||
|
End of 5.0 tests
|
||||||
|
@ -75,6 +75,12 @@ NULL
|
|||||||
select weekofyear("1997-11-30 23:59:59.000001");
|
select weekofyear("1997-11-30 23:59:59.000001");
|
||||||
weekofyear("1997-11-30 23:59:59.000001")
|
weekofyear("1997-11-30 23:59:59.000001")
|
||||||
48
|
48
|
||||||
|
select makedate(03,1);
|
||||||
|
makedate(03,1)
|
||||||
|
2003-01-01
|
||||||
|
select makedate('0003',1);
|
||||||
|
makedate('0003',1)
|
||||||
|
2003-01-01
|
||||||
select makedate(1997,1);
|
select makedate(1997,1);
|
||||||
makedate(1997,1)
|
makedate(1997,1)
|
||||||
1997-01-01
|
1997-01-01
|
||||||
|
@ -1225,13 +1225,13 @@ TIME_FORMAT(SEC_TO_TIME(a),"%H:%i:%s")
|
|||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
|
select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||||
date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND)
|
date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||||
NULL
|
0049-12-31 23:59:59
|
||||||
select date_sub("0199-01-01 00:00:01",INTERVAL 2 SECOND);
|
select date_sub("0199-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||||
date_sub("0199-01-01 00:00:01",INTERVAL 2 SECOND)
|
date_sub("0199-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||||
NULL
|
0198-12-31 23:59:59
|
||||||
select date_add("0199-12-31 23:59:59",INTERVAL 2 SECOND);
|
select date_add("0199-12-31 23:59:59",INTERVAL 2 SECOND);
|
||||||
date_add("0199-12-31 23:59:59",INTERVAL 2 SECOND)
|
date_add("0199-12-31 23:59:59",INTERVAL 2 SECOND)
|
||||||
NULL
|
0200-01-01 00:00:01
|
||||||
select date_sub("0200-01-01 00:00:01",INTERVAL 2 SECOND);
|
select date_sub("0200-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||||
date_sub("0200-01-01 00:00:01",INTERVAL 2 SECOND)
|
date_sub("0200-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||||
0199-12-31 23:59:59
|
0199-12-31 23:59:59
|
||||||
@ -1252,8 +1252,8 @@ date_sub("90-01-01 00:00:01",INTERVAL 2 SECOND)
|
|||||||
1989-12-31 23:59:59
|
1989-12-31 23:59:59
|
||||||
select date_sub("0069-01-01 00:00:01",INTERVAL 2 SECOND);
|
select date_sub("0069-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||||
date_sub("0069-01-01 00:00:01",INTERVAL 2 SECOND)
|
date_sub("0069-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||||
NULL
|
0068-12-31 23:59:59
|
||||||
select date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND);
|
select date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||||
date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND)
|
date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||||
NULL
|
0168-12-31 23:59:59
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
SET GLOBAL log_bin_trust_function_creators = 1;
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
drop database if exists mysqltest;
|
drop database if exists mysqltest;
|
||||||
SET NAMES binary;
|
SET NAMES binary;
|
||||||
@ -1059,6 +1060,128 @@ DROP DATABASE bug23556;
|
|||||||
DROP USER bug23556@localhost;
|
DROP USER bug23556@localhost;
|
||||||
GRANT PROCESS ON * TO user@localhost;
|
GRANT PROCESS ON * TO user@localhost;
|
||||||
ERROR 3D000: No database selected
|
ERROR 3D000: No database selected
|
||||||
|
DROP DATABASE IF EXISTS mysqltest1;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest2;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest3;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest4;
|
||||||
|
CREATE DATABASE mysqltest1;
|
||||||
|
CREATE DATABASE mysqltest2;
|
||||||
|
CREATE DATABASE mysqltest3;
|
||||||
|
CREATE DATABASE mysqltest4;
|
||||||
|
CREATE PROCEDURE mysqltest1.p_def() SQL SECURITY DEFINER
|
||||||
|
SELECT 1;
|
||||||
|
CREATE PROCEDURE mysqltest2.p_inv() SQL SECURITY INVOKER
|
||||||
|
SELECT 1;
|
||||||
|
CREATE FUNCTION mysqltest3.f_def() RETURNS INT SQL SECURITY DEFINER
|
||||||
|
RETURN 1;
|
||||||
|
CREATE FUNCTION mysqltest4.f_inv() RETURNS INT SQL SECURITY INVOKER
|
||||||
|
RETURN 1;
|
||||||
|
GRANT EXECUTE ON PROCEDURE mysqltest1.p_def TO mysqltest_1@localhost;
|
||||||
|
GRANT EXECUTE ON PROCEDURE mysqltest2.p_inv TO mysqltest_1@localhost;
|
||||||
|
GRANT EXECUTE ON FUNCTION mysqltest3.f_def TO mysqltest_1@localhost;
|
||||||
|
GRANT EXECUTE ON FUNCTION mysqltest4.f_inv TO mysqltest_1@localhost;
|
||||||
|
GRANT ALL PRIVILEGES ON test.* TO mysqltest_1@localhost;
|
||||||
|
|
||||||
|
---> connection: bug9504_con1
|
||||||
|
use mysqltest1;
|
||||||
|
use mysqltest2;
|
||||||
|
use mysqltest3;
|
||||||
|
use mysqltest4;
|
||||||
|
use test;
|
||||||
|
CALL mysqltest1.p_def();
|
||||||
|
1
|
||||||
|
1
|
||||||
|
CALL mysqltest2.p_inv();
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT mysqltest3.f_def();
|
||||||
|
mysqltest3.f_def()
|
||||||
|
1
|
||||||
|
SELECT mysqltest4.f_inv();
|
||||||
|
mysqltest4.f_inv()
|
||||||
|
1
|
||||||
|
|
||||||
|
---> connection: default
|
||||||
|
DROP DATABASE mysqltest1;
|
||||||
|
DROP DATABASE mysqltest2;
|
||||||
|
DROP DATABASE mysqltest3;
|
||||||
|
DROP DATABASE mysqltest4;
|
||||||
|
DROP USER mysqltest_1@localhost;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest1;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest2;
|
||||||
|
CREATE DATABASE mysqltest1;
|
||||||
|
CREATE DATABASE mysqltest2;
|
||||||
|
GRANT ALL PRIVILEGES ON mysqltest1.* TO mysqltest_1@localhost;
|
||||||
|
GRANT SELECT ON mysqltest2.* TO mysqltest_1@localhost;
|
||||||
|
CREATE PROCEDURE mysqltest1.p1() SQL SECURITY INVOKER
|
||||||
|
SELECT 1;
|
||||||
|
|
||||||
|
---> connection: bug27337_con1
|
||||||
|
CREATE TABLE t1(c INT);
|
||||||
|
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
||||||
|
CALL mysqltest1.p1();
|
||||||
|
1
|
||||||
|
1
|
||||||
|
CREATE TABLE t1(c INT);
|
||||||
|
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
||||||
|
|
||||||
|
---> connection: bug27337_con2
|
||||||
|
CREATE TABLE t1(c INT);
|
||||||
|
ERROR 42000: CREATE command denied to user 'mysqltest_1'@'localhost' for table 't1'
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_mysqltest2
|
||||||
|
|
||||||
|
---> connection: default
|
||||||
|
DROP DATABASE mysqltest1;
|
||||||
|
DROP DATABASE mysqltest2;
|
||||||
|
DROP USER mysqltest_1@localhost;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest1;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest2;
|
||||||
|
CREATE DATABASE mysqltest1;
|
||||||
|
CREATE DATABASE mysqltest2;
|
||||||
|
CREATE TABLE mysqltest1.t1(c INT);
|
||||||
|
CREATE TABLE mysqltest2.t2(c INT);
|
||||||
|
GRANT SELECT ON mysqltest1.t1 TO mysqltest_1@localhost;
|
||||||
|
GRANT SELECT ON mysqltest2.t2 TO mysqltest_2@localhost;
|
||||||
|
|
||||||
|
---> connection: bug27337_con1
|
||||||
|
SHOW TABLES FROM mysqltest1;
|
||||||
|
Tables_in_mysqltest1
|
||||||
|
t1
|
||||||
|
PREPARE stmt1 FROM 'SHOW TABLES FROM mysqltest1';
|
||||||
|
EXECUTE stmt1;
|
||||||
|
Tables_in_mysqltest1
|
||||||
|
t1
|
||||||
|
|
||||||
|
---> connection: bug27337_con2
|
||||||
|
SHOW COLUMNS FROM mysqltest2.t2;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c int(11) YES NULL
|
||||||
|
PREPARE stmt2 FROM 'SHOW COLUMNS FROM mysqltest2.t2';
|
||||||
|
EXECUTE stmt2;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
c int(11) YES NULL
|
||||||
|
|
||||||
|
---> connection: default
|
||||||
|
REVOKE SELECT ON mysqltest1.t1 FROM mysqltest_1@localhost;
|
||||||
|
REVOKE SELECT ON mysqltest2.t2 FROM mysqltest_2@localhost;
|
||||||
|
|
||||||
|
---> connection: bug27337_con1
|
||||||
|
SHOW TABLES FROM mysqltest1;
|
||||||
|
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest1'
|
||||||
|
EXECUTE stmt1;
|
||||||
|
ERROR 42000: Access denied for user 'mysqltest_1'@'localhost' to database 'mysqltest1'
|
||||||
|
|
||||||
|
---> connection: bug27337_con2
|
||||||
|
SHOW COLUMNS FROM mysqltest2.t2;
|
||||||
|
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table 't2'
|
||||||
|
EXECUTE stmt2;
|
||||||
|
ERROR 42000: SELECT command denied to user 'mysqltest_2'@'localhost' for table 't2'
|
||||||
|
|
||||||
|
---> connection: default
|
||||||
|
DROP DATABASE mysqltest1;
|
||||||
|
DROP DATABASE mysqltest2;
|
||||||
|
DROP USER mysqltest_1@localhost;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
set names utf8;
|
set names utf8;
|
||||||
grant select on test.* to юзер_юзер@localhost;
|
grant select on test.* to юзер_юзер@localhost;
|
||||||
|
@ -117,16 +117,82 @@ use testdb_1;
|
|||||||
create table t1 (f1 char(4));
|
create table t1 (f1 char(4));
|
||||||
create view v1 as select f1 from t1;
|
create view v1 as select f1 from t1;
|
||||||
grant insert on v1 to testdb_2@localhost;
|
grant insert on v1 to testdb_2@localhost;
|
||||||
|
create view v5 as select f1 from t1;
|
||||||
|
grant show view on v5 to testdb_2@localhost;
|
||||||
|
create definer=`no_such_user`@`no_such_host` view v6 as select f1 from t1;
|
||||||
|
ERROR 42000: Access denied; you need the SUPER privilege for this operation
|
||||||
|
use testdb_1;
|
||||||
|
create view v6 as select f1 from t1;
|
||||||
|
grant show view on v6 to testdb_2@localhost;
|
||||||
|
create table t2 (f1 char(4));
|
||||||
|
create definer=`no_such_user`@`no_such_host` view v7 as select * from t2;
|
||||||
|
Warnings:
|
||||||
|
Note 1449 There is no 'no_such_user'@'no_such_host' registered
|
||||||
|
show fields from testdb_1.v6;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
f1 char(4) YES NULL
|
||||||
|
show create view testdb_1.v6;
|
||||||
|
View Create View
|
||||||
|
v6 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v6` AS select `t1`.`f1` AS `f1` from `t1`
|
||||||
|
show create view testdb_1.v7;
|
||||||
|
View Create View
|
||||||
|
v7 CREATE ALGORITHM=UNDEFINED DEFINER=`no_such_user`@`no_such_host` SQL SECURITY DEFINER VIEW `v7` AS select `testdb_1`.`t2`.`f1` AS `f1` from `t2`
|
||||||
|
Warnings:
|
||||||
|
Warning 1356 View 'testdb_1.v7' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||||
|
show fields from testdb_1.v7;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
f1 null YES NULL
|
||||||
|
Warnings:
|
||||||
|
Note 1449 There is no 'no_such_user'@'no_such_host' registered
|
||||||
create table t3 (f1 char(4), f2 char(4));
|
create table t3 (f1 char(4), f2 char(4));
|
||||||
create view v3 as select f1,f2 from t3;
|
create view v3 as select f1,f2 from t3;
|
||||||
grant insert(f1), insert(f2) on v3 to testdb_2@localhost;
|
grant insert(f1), insert(f2) on v3 to testdb_2@localhost;
|
||||||
create view v2 as select f1 from testdb_1.v1;
|
create view v2 as select f1 from testdb_1.v1;
|
||||||
create view v4 as select f1,f2 from testdb_1.v3;
|
create view v4 as select f1,f2 from testdb_1.v3;
|
||||||
|
show fields from testdb_1.v5;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
f1 char(4) YES NULL
|
||||||
|
show create view testdb_1.v5;
|
||||||
|
View Create View
|
||||||
|
v5 CREATE ALGORITHM=UNDEFINED DEFINER=`testdb_1`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v5` AS select `testdb_1`.`t1`.`f1` AS `f1` from `testdb_1`.`t1`
|
||||||
|
show fields from testdb_1.v6;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
f1 char(4) YES NULL
|
||||||
|
show create view testdb_1.v6;
|
||||||
|
View Create View
|
||||||
|
v6 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `testdb_1`.`v6` AS select `testdb_1`.`t1`.`f1` AS `f1` from `testdb_1`.`t1`
|
||||||
|
show fields from testdb_1.v7;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
f1 null YES NULL
|
||||||
|
Warnings:
|
||||||
|
Note 1449 There is no 'no_such_user'@'no_such_host' registered
|
||||||
|
show create view testdb_1.v7;
|
||||||
|
View Create View
|
||||||
|
v7 CREATE ALGORITHM=UNDEFINED DEFINER=`no_such_user`@`no_such_host` SQL SECURITY DEFINER VIEW `v7` AS select `testdb_1`.`t2`.`f1` AS `f1` from `t2`
|
||||||
|
Warnings:
|
||||||
|
Warning 1356 View 'testdb_1.v7' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||||
revoke insert(f1) on v3 from testdb_2@localhost;
|
revoke insert(f1) on v3 from testdb_2@localhost;
|
||||||
|
revoke show view on v5 from testdb_2@localhost;
|
||||||
|
use testdb_1;
|
||||||
|
revoke show view on v6 from testdb_2@localhost;
|
||||||
|
show fields from testdb_1.v5;
|
||||||
|
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v5'
|
||||||
|
show create view testdb_1.v5;
|
||||||
|
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v5'
|
||||||
|
show fields from testdb_1.v6;
|
||||||
|
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v6'
|
||||||
|
show create view testdb_1.v6;
|
||||||
|
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v6'
|
||||||
|
show fields from testdb_1.v7;
|
||||||
|
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v7'
|
||||||
|
show create view testdb_1.v7;
|
||||||
|
ERROR 42000: SELECT command denied to user 'testdb_2'@'localhost' for table 'v7'
|
||||||
show create view v4;
|
show create view v4;
|
||||||
ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||||
show fields from v4;
|
show fields from v4;
|
||||||
ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
Field Type Null Key Default Extra
|
||||||
|
f1 null YES NULL
|
||||||
|
f2 char(4) YES NULL
|
||||||
show fields from v2;
|
show fields from v2;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
f1 char(4) YES NULL
|
f1 char(4) YES NULL
|
||||||
@ -151,7 +217,8 @@ where a.table_name = 'testdb_1.v1';
|
|||||||
view_definition
|
view_definition
|
||||||
select * from v2;
|
select * from v2;
|
||||||
ERROR HY000: View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
ERROR HY000: View 'test.v2' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||||
drop view testdb_1.v1,v2, testdb_1.v3, v4;
|
use test;
|
||||||
|
drop view testdb_1.v1, v2, testdb_1.v3, v4;
|
||||||
drop database testdb_1;
|
drop database testdb_1;
|
||||||
drop user testdb_1@localhost;
|
drop user testdb_1@localhost;
|
||||||
drop user testdb_2@localhost;
|
drop user testdb_2@localhost;
|
||||||
|
@ -7,3 +7,4 @@ SOCKET
|
|||||||
ERROR 2047 (HY000): Wrong or unknown protocol
|
ERROR 2047 (HY000): Wrong or unknown protocol
|
||||||
ERROR 2047 (HY000): Wrong or unknown protocol
|
ERROR 2047 (HY000): Wrong or unknown protocol
|
||||||
Unknown option to protocol: NullS
|
Unknown option to protocol: NullS
|
||||||
|
Alternatives are: 'TCP','SOCKET','PIPE','MEMORY'
|
||||||
|
@ -122,6 +122,23 @@ DELIMITER ;
|
|||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
|
||||||
|
--- start and stop positions ---
|
||||||
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
|
DELIMITER /*!*/;
|
||||||
|
SET INSERT_ID=4/*!*/;
|
||||||
|
use test/*!*/;
|
||||||
|
SET TIMESTAMP=1579609946/*!*/;
|
||||||
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
|
SET @@session.sql_mode=0/*!*/;
|
||||||
|
/*!\C latin1 *//*!*/;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
insert into t1 values(null, "d")/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
|
# End of log file
|
||||||
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
|
||||||
--- start-datetime --
|
--- start-datetime --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
@ -482,6 +499,23 @@ DELIMITER ;
|
|||||||
ROLLBACK /* added by mysqlbinlog */;
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
|
||||||
|
--- start and stop positions ---
|
||||||
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
|
DELIMITER /*!*/;
|
||||||
|
SET INSERT_ID=4/*!*/;
|
||||||
|
use test/*!*/;
|
||||||
|
SET TIMESTAMP=1579609946/*!*/;
|
||||||
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||||
|
SET @@session.sql_mode=0/*!*/;
|
||||||
|
/*!\C latin1 *//*!*/;
|
||||||
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
|
insert into t1 values(null, "d")/*!*/;
|
||||||
|
DELIMITER ;
|
||||||
|
# End of log file
|
||||||
|
ROLLBACK /* added by mysqlbinlog */;
|
||||||
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||||
|
|
||||||
--- start-datetime --
|
--- start-datetime --
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||||
|
@ -468,6 +468,13 @@ insert into t1 values(7,'x');
|
|||||||
insert into t1 values(8,'x');
|
insert into t1 values(8,'x');
|
||||||
delete from t1 where a = 0;
|
delete from t1 where a = 0;
|
||||||
commit;
|
commit;
|
||||||
|
delete from t1;
|
||||||
|
begin;
|
||||||
|
insert into t1 values (1, 'x');
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 x
|
||||||
|
rollback;
|
||||||
set autocommit = 1;
|
set autocommit = 1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table test.t1 (f1 varchar(50) primary key, f2 text,f3 int)
|
create table test.t1 (f1 varchar(50) primary key, f2 text,f3 int)
|
||||||
|
@ -2,12 +2,12 @@ use test;
|
|||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
|
||||||
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
drop table if exists t1_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_c;
|
||||||
CREATE TABLE `t1_c` (
|
CREATE TABLE `t1_c` (
|
||||||
`capgoaledatta` smallint(5) unsigned NOT NULL auto_increment,
|
`capgoaledatta` mediumint(5) unsigned NOT NULL auto_increment,
|
||||||
`goaledatta` char(2) NOT NULL default '',
|
`goaledatta` char(2) NOT NULL default '',
|
||||||
`maturegarbagefa` varchar(32) NOT NULL default '',
|
`maturegarbagefa` varchar(32) NOT NULL default '',
|
||||||
PRIMARY KEY (`capgoaledatta`,`goaledatta`,`maturegarbagefa`)
|
PRIMARY KEY (`capgoaledatta`,`goaledatta`,`maturegarbagefa`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||||
INSERT INTO `t1_c` VALUES (2,'3','q3plus.qt'),(4,'4','q3plus.qt'),(1,'3','q3.net'),(3,'4','q3.net'),(3,'20','threetrees.qt');
|
INSERT INTO `t1_c` VALUES (2,'3','q3plus.qt'),(400,'4','q3plus.qt'),(1,'3','q3.net'),(3,'4','q3.net'),(3000,'20','threetrees.qt');
|
||||||
CREATE TABLE `t2_c` (
|
CREATE TABLE `t2_c` (
|
||||||
`capgotod` smallint(5) unsigned NOT NULL auto_increment,
|
`capgotod` smallint(5) unsigned NOT NULL auto_increment,
|
||||||
`gotod` smallint(5) unsigned NOT NULL default '0',
|
`gotod` smallint(5) unsigned NOT NULL default '0',
|
||||||
@ -16,9 +16,9 @@ CREATE TABLE `t2_c` (
|
|||||||
`descrpooppo` varchar(64) default NULL,
|
`descrpooppo` varchar(64) default NULL,
|
||||||
`svcutonsa` varchar(64) NOT NULL default '',
|
`svcutonsa` varchar(64) NOT NULL default '',
|
||||||
PRIMARY KEY (`capgotod`),
|
PRIMARY KEY (`capgotod`),
|
||||||
KEY `i_quadaddsvr` (`gotod`)
|
KEY `i quadaddsvr` (`gotod`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||||
INSERT INTO `t2_c` VALUES (5,4,'','q3.net','addavp:MK_CASELECTOR=1','postorod rattoaa'),(2,1,'4','','addavp:MK_BRANDTAD=345','REDS Brandtad'),(3,2,'4','q3.net','execorder','fixedRatediPO REDS'),(1,1,'3','','addavp:MK_BRANDTAD=123','TEST Brandtad'),(6,5,'','told.q3.net','addavp:MK_BRANDTAD=123','Brandtad Toldzone'),(4,3,'3','q3.net','addavp:MK_POOLHINT=2','ratedi PO TEST');
|
INSERT INTO `t2_c` VALUES (500,4,'','q3.net','addavp:MK_CASELECTOR=1','postorod rattoaa'),(2,1,'4','','addavp:MK_BRANDTAD=345','REDS Brandtad'),(3,2,'4','q3.net','execorder','fixedRatediPO REDS'),(1,1,'3','','addavp:MK_BRANDTAD=123','TEST Brandtad'),(6,5,'','told.q3.net','addavp:MK_BRANDTAD=123','Brandtad Toldzone'),(4,3,'3','q3.net','addavp:MK_POOLHINT=2','ratedi PO TEST');
|
||||||
CREATE TABLE `t3_c` (
|
CREATE TABLE `t3_c` (
|
||||||
`CapGoaledatta` smallint(5) unsigned NOT NULL default '0',
|
`CapGoaledatta` smallint(5) unsigned NOT NULL default '0',
|
||||||
`capgotod` smallint(5) unsigned NOT NULL default '0',
|
`capgotod` smallint(5) unsigned NOT NULL default '0',
|
||||||
@ -36,7 +36,7 @@ PRIMARY KEY (`fa`,`realm`),
|
|||||||
KEY `capfa` (`capfa`),
|
KEY `capfa` (`capfa`),
|
||||||
KEY `i_quadentity` (`fa`,`realm`)
|
KEY `i_quadentity` (`fa`,`realm`)
|
||||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||||
INSERT INTO `t4_c` VALUES (18,'john.smith','q3.net','dessjohn.smith',0,NULL),(21,'quad_katt_with_brandtad','q3.net','acne',0,NULL),(22,'quad_katt_carattoaa','q3.net','acne',0,NULL),(26,'436462612809','sqasdt.q3.net','N/A',0,'6'),(19,'john','smith.qt','dessjohn',0,NULL),(33,'436643196120','sqasdt.q3.net','N/A',1,'6'),(28,'436642900019','sqasdt.q3.net','N/A',0,'6'),(30,'436462900209','sqasdt.q3.net','N/A',0,'6'),(16,'436640006666','sqasdt.q3.net','',0,NULL),(19,'dette','el-redun.com','dessdette',0,NULL),(12,'quad_kattPP','q3.net','acne',2,NULL),(14,'436640008888','sqasdt.q3.net','',0,NULL),(29,'463624900028','sqasdt.q3.net','N/A',0,'6'),(15,'436640099099','sqasdt.q3.net','',0,NULL),(13,'pap','q3plus.qt','acne',1,NULL),(19,'436642612091','sqasdt.q3.net','N/A',0,'6'),(12,'quad_katt','q3.net','acne',0,NULL),(11,'quad_kattVK','q3.net','acne',1,NULL),(32,'463641969502','sqasdt.q3.net','N/A',1,'6'),(20,'joe','q3.net','joedesswd',0,NULL),(29,'436642900034','sqasdt.q3.net','N/A',0,'6'),(25,'contind','armerde.qt','acne',1,NULL);
|
INSERT INTO `t4_c` VALUES (18,'john.smith','q3.net','dessjohn.smith',0,NULL),(21,'quad_katt_with_brandtad','q3.net','acne',0,NULL),(2200,'quad_katt_carattoaa','q3.net','acne',0,NULL),(26,'436462612809','sqasdt.q3.net','N/A',0,'6'),(19,'john','smith.qt','dessjohn',0,NULL),(33,'436643196120','sqasdt.q3.net','N/A',1,'6'),(28,'436642900019','sqasdt.q3.net','N/A',0,'6'),(30,'436462900209','sqasdt.q3.net','N/A',0,'6'),(16,'436640006666','sqasdt.q3.net','',0,NULL),(19,'dette','el-redun.com','dessdette',0,NULL),(12,'quad_kattPP','q3.net','acne',2,NULL),(14,'436640008888','sqasdt.q3.net','',0,NULL),(29,'463624900028','sqasdt.q3.net','N/A',0,'6'),(15,'436640099099','sqasdt.q3.net','',0,NULL),(13,'pap','q3plus.qt','acne',1,NULL),(19,'436642612091','sqasdt.q3.net','N/A',0,'6'),(12,'quad_katt','q3.net','acne',0,NULL),(11,'quad_kattVK','q3.net','acne',1,NULL),(32000,'463641969502','sqasdt.q3.net','N/A',1,'6'),(20,'joe','q3.net','joedesswd',0,NULL),(290000000,'436642900034','sqasdt.q3.net','N/A',0,'6'),(25,'contind','armerde.qt','acne',1,NULL);
|
||||||
CREATE TABLE `t5_c` (
|
CREATE TABLE `t5_c` (
|
||||||
`capfa` bigint(20) unsigned NOT NULL default '0',
|
`capfa` bigint(20) unsigned NOT NULL default '0',
|
||||||
`gotod` smallint(5) unsigned NOT NULL default '0',
|
`gotod` smallint(5) unsigned NOT NULL default '0',
|
||||||
@ -53,7 +53,7 @@ PRIMARY KEY (`capfa_child`,`capfa_parent`,`relatta`)
|
|||||||
INSERT INTO `t6_c` VALUES (15,16,0),(19,20,0),(18326932092909551615,30,0),(26,29,0),(18326932092909551615,29,0),(19,18,0),(26,28,0),(12,14,0);
|
INSERT INTO `t6_c` VALUES (15,16,0),(19,20,0),(18326932092909551615,30,0),(26,29,0),(18326932092909551615,29,0),(19,18,0),(26,28,0),(12,14,0);
|
||||||
CREATE TABLE `t7_c` (
|
CREATE TABLE `t7_c` (
|
||||||
`dardpo` char(15) NOT NULL default '',
|
`dardpo` char(15) NOT NULL default '',
|
||||||
`dardtestard` tinyint(3) unsigned NOT NULL default '0',
|
`dardtestard` tinyint(3) unsigned NOT NULL auto_increment,
|
||||||
`FastFA` char(5) NOT NULL default '',
|
`FastFA` char(5) NOT NULL default '',
|
||||||
`FastCode` char(6) NOT NULL default '',
|
`FastCode` char(6) NOT NULL default '',
|
||||||
`Fastca` char(1) NOT NULL default '',
|
`Fastca` char(1) NOT NULL default '',
|
||||||
@ -118,6 +118,7 @@ PRIMARY KEY (`kattjame`,`hunderaaarbagefa`,`hassetistart`,`hassetino`)
|
|||||||
INSERT INTO `t9_c` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);
|
INSERT INTO `t9_c` VALUES ('3g4jh8gar2t','joe','q3.net','elredun.com','q3.net','436643316120','436643316939','91341234568968','695595699','1.1.1.1','2.2.6.2','3','86989','34','x','x','2012-03-12 18:35:04','2012-12-05 12:35:04',3123123,9569,6565,1),('4tt45345235','pap','q3plus.qt','q3plus.qt','q3.net','436643316120','436643316939','8956234534568968','5254595969','1.1.1.1','8.6.2.2','4','86989','34','x','x','2012-03-12 12:55:34','2012-12-05 11:20:04',3223433,3369,9565,2),('4545435545','john','q3.net','q3.net','acne.li','436643316120','436643316939','45345234568968','995696699','1.1.1.1','2.9.9.2','2','86998','34','x','x','2012-03-12 11:35:03','2012-12-05 08:50:04',8823123,169,3565,3);
|
||||||
CREATE TABLE t10_c (a INT AUTO_INCREMENT KEY) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
CREATE TABLE t10_c (a INT AUTO_INCREMENT KEY) ENGINE=ndbcluster DEFAULT CHARSET=latin1;
|
||||||
INSERT INTO t10_c VALUES (1),(2),(3);
|
INSERT INTO t10_c VALUES (1),(2),(3);
|
||||||
|
insert into t10_c values (10000),(2000),(3000);
|
||||||
create table t1 engine=myisam as select * from t1_c;
|
create table t1 engine=myisam as select * from t1_c;
|
||||||
create table t2 engine=myisam as select * from t2_c;
|
create table t2 engine=myisam as select * from t2_c;
|
||||||
create table t3 engine=myisam as select * from t3_c;
|
create table t3 engine=myisam as select * from t3_c;
|
||||||
@ -240,6 +241,24 @@ a
|
|||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
3
|
||||||
|
2000
|
||||||
|
3000
|
||||||
|
10000
|
||||||
|
show table status like 't1_c';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
X X X X X X X X X X 3001 X X X X X X X
|
||||||
|
show table status like 't2_c';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
X X X X X X X X X X 501 X X X X X X X
|
||||||
|
show table status like 't4_c';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
X X X X X X X X X X 290000001 X X X X X X X
|
||||||
|
show table status like 't7_c';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
X X X X X X X X X X 29 X X X X X X X
|
||||||
|
show table status like 't10_c';
|
||||||
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
|
X X X X X X X X X X 10001 X X X X X X X
|
||||||
ALTER TABLE t7_c
|
ALTER TABLE t7_c
|
||||||
PARTITION BY LINEAR KEY (`dardtestard`);
|
PARTITION BY LINEAR KEY (`dardtestard`);
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
CREATE TEMPORARY TABLE IF NOT EXISTS test.backup_info (id INT, backup_id INT) ENGINE = HEAP;
|
||||||
|
@ -2961,20 +2961,26 @@ delete from t9 ;
|
|||||||
test_sequence
|
test_sequence
|
||||||
-- insert into date/time columns --
|
-- insert into date/time columns --
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1264 Out of range value for column 'c13' at row 1
|
Warning 1264 Out of range value for column 'c13' at row 1
|
||||||
@ -3005,6 +3011,7 @@ Warning 1265 Data truncated for column 'c15' at row 1
|
|||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c15' at row 1
|
Warning 1265 Data truncated for column 'c15' at row 1
|
||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
|
@ -2944,20 +2944,26 @@ delete from t9 ;
|
|||||||
test_sequence
|
test_sequence
|
||||||
-- insert into date/time columns --
|
-- insert into date/time columns --
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1264 Out of range value for column 'c13' at row 1
|
Warning 1264 Out of range value for column 'c13' at row 1
|
||||||
@ -2988,6 +2994,7 @@ Warning 1265 Data truncated for column 'c15' at row 1
|
|||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c15' at row 1
|
Warning 1265 Data truncated for column 'c15' at row 1
|
||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
|
@ -2945,20 +2945,26 @@ delete from t9 ;
|
|||||||
test_sequence
|
test_sequence
|
||||||
-- insert into date/time columns --
|
-- insert into date/time columns --
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1264 Out of range value for column 'c13' at row 1
|
Warning 1264 Out of range value for column 'c13' at row 1
|
||||||
@ -2989,6 +2995,7 @@ Warning 1265 Data truncated for column 'c15' at row 1
|
|||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c15' at row 1
|
Warning 1265 Data truncated for column 'c15' at row 1
|
||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
|
@ -2881,20 +2881,26 @@ delete from t9 ;
|
|||||||
test_sequence
|
test_sequence
|
||||||
-- insert into date/time columns --
|
-- insert into date/time columns --
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1264 Out of range value for column 'c13' at row 1
|
Warning 1264 Out of range value for column 'c13' at row 1
|
||||||
@ -2925,6 +2931,7 @@ Warning 1265 Data truncated for column 'c15' at row 1
|
|||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c15' at row 1
|
Warning 1265 Data truncated for column 'c15' at row 1
|
||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
@ -5895,20 +5902,26 @@ delete from t9 ;
|
|||||||
test_sequence
|
test_sequence
|
||||||
-- insert into date/time columns --
|
-- insert into date/time columns --
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1264 Out of range value for column 'c13' at row 1
|
Warning 1264 Out of range value for column 'c13' at row 1
|
||||||
@ -5939,6 +5952,7 @@ Warning 1265 Data truncated for column 'c15' at row 1
|
|||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c15' at row 1
|
Warning 1265 Data truncated for column 'c15' at row 1
|
||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
|
@ -2944,20 +2944,26 @@ delete from t9 ;
|
|||||||
test_sequence
|
test_sequence
|
||||||
-- insert into date/time columns --
|
-- insert into date/time columns --
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c17' at row 1
|
Warning 1265 Data truncated for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1264 Out of range value for column 'c13' at row 1
|
Warning 1264 Out of range value for column 'c13' at row 1
|
||||||
@ -2988,6 +2994,7 @@ Warning 1265 Data truncated for column 'c15' at row 1
|
|||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
Warnings:
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'c13' at row 1
|
||||||
Warning 1265 Data truncated for column 'c15' at row 1
|
Warning 1265 Data truncated for column 'c15' at row 1
|
||||||
Warning 1264 Out of range value for column 'c16' at row 1
|
Warning 1264 Out of range value for column 'c16' at row 1
|
||||||
Warning 1264 Out of range value for column 'c17' at row 1
|
Warning 1264 Out of range value for column 'c17' at row 1
|
||||||
|
@ -175,6 +175,24 @@ ROW(2,10) <=> ROW(3,4)
|
|||||||
SELECT ROW(NULL,10) <=> ROW(3,NULL);
|
SELECT ROW(NULL,10) <=> ROW(3,NULL);
|
||||||
ROW(NULL,10) <=> ROW(3,NULL)
|
ROW(NULL,10) <=> ROW(3,NULL)
|
||||||
0
|
0
|
||||||
|
SELECT ROW(1,ROW(2,3)) IN (ROW(1,ROW(2,3)),ROW(1,1));
|
||||||
|
ERROR 21000: Operand should contain 2 column(s)
|
||||||
|
SELECT ROW(1,ROW(2,3)) IN (ROW(1,ROW(2,3)),ROW(1,1),ROW(1,ROW(2,3)));
|
||||||
|
ERROR 21000: Operand should contain 2 column(s)
|
||||||
|
SELECT ROW(1,ROW(2,3)) IN (ROW(1,ROW(2,3)),ROW(1,ROW(2,2,2)));
|
||||||
|
ERROR 21000: Operand should contain 2 column(s)
|
||||||
|
SELECT ROW(1,ROW(2,3,4)) IN (ROW(1,ROW(2,3,4)),ROW(1,ROW(2,2)));
|
||||||
|
ERROR 21000: Operand should contain 3 column(s)
|
||||||
|
SELECT ROW(1,ROW(2,3)) IN (ROW(1,ROW(2,3)),(SELECT 1,1));
|
||||||
|
ERROR 21000: Operand should contain 2 column(s)
|
||||||
|
SELECT ROW(1,ROW(2,3)) IN (ROW(1,ROW(2,3)),(SELECT 1,1),ROW(1,ROW(2,4)));
|
||||||
|
ERROR 21000: Operand should contain 2 column(s)
|
||||||
|
SELECT ROW(1,ROW(2,3)) IN ((SELECT 1,1),ROW(1,ROW(2,3)));
|
||||||
|
ERROR 21000: Operand should contain 2 column(s)
|
||||||
|
SELECT ROW(2,1) IN (ROW(21,2),ROW(ROW(1,1,3),0));
|
||||||
|
ERROR 21000: Operand should contain 1 column(s)
|
||||||
|
SELECT ROW(2,1) IN (ROW(ROW(1,1,3),0),ROW(21,2));
|
||||||
|
ERROR 21000: Operand should contain 1 column(s)
|
||||||
SELECT ROW(1,1,1) = ROW(1,1,1) as `1`, ROW(1,1,1) = ROW(1,2,1) as `0`, ROW(1,NULL,1) = ROW(2,2,1) as `0`, ROW(1,NULL,1) = ROW(1,2,2) as `0`, ROW(1,NULL,1) = ROW(1,2,1) as `null` ;
|
SELECT ROW(1,1,1) = ROW(1,1,1) as `1`, ROW(1,1,1) = ROW(1,2,1) as `0`, ROW(1,NULL,1) = ROW(2,2,1) as `0`, ROW(1,NULL,1) = ROW(1,2,2) as `0`, ROW(1,NULL,1) = ROW(1,2,1) as `null` ;
|
||||||
1 0 0 0 null
|
1 0 0 0 null
|
||||||
1 0 0 0 NULL
|
1 0 0 0 NULL
|
||||||
|
@ -27,7 +27,7 @@ change master to master_log_pos=178;
|
|||||||
start slave;
|
start slave;
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 178 # # master-bin.000001 No Yes 0 0 178 # None 0 No # No
|
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 178 # # master-bin.000001 # Yes 0 0 178 # None 0 No # No
|
||||||
show master status;
|
show master status;
|
||||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||||
master-bin.000001 106 <Binlog_Ignore_DB>
|
master-bin.000001 106 <Binlog_Ignore_DB>
|
||||||
|
@ -24,6 +24,33 @@ nid nom prenom
|
|||||||
select * from t1 order by nid;
|
select * from t1 order by nid;
|
||||||
nid nom prenom
|
nid nom prenom
|
||||||
1 XYZ2 ABC2
|
1 XYZ2 ABC2
|
||||||
|
delete from t1;
|
||||||
|
insert into t1 values(1,"AA", "AA");
|
||||||
|
insert into t1 values(2,"BB", "BB");
|
||||||
|
insert into t1 values(3,"CC", "CC");
|
||||||
|
insert into t1 values(4,"DD", "DD");
|
||||||
|
begin;
|
||||||
|
delete from t1 where nid = 1;
|
||||||
|
insert into t1 values (1,"A2", "A2");
|
||||||
|
update t1 set nom="B2" where nid = 2;
|
||||||
|
delete from t1 where nid = 2;
|
||||||
|
update t1 set nom = "D2" where nid = 4;
|
||||||
|
delete from t1 where nid = 4;
|
||||||
|
insert into t1 values (4, "D3", "D3");
|
||||||
|
update t1 set nom = "D4" where nid = 4;
|
||||||
|
insert into t1 values (5, "EE", "EE");
|
||||||
|
delete from t1 where nid = 5;
|
||||||
|
commit;
|
||||||
|
select * from t1 order by 1;
|
||||||
|
nid nom prenom
|
||||||
|
1 A2 A2
|
||||||
|
3 CC CC
|
||||||
|
4 D4 D3
|
||||||
|
select * from t1 order by 1;
|
||||||
|
nid nom prenom
|
||||||
|
1 A2 A2
|
||||||
|
3 CC CC
|
||||||
|
4 D4 D3
|
||||||
DROP table t1;
|
DROP table t1;
|
||||||
CREATE TABLE `t1` ( `nid` int(11) NOT NULL default '0',
|
CREATE TABLE `t1` ( `nid` int(11) NOT NULL default '0',
|
||||||
`nom` char(4) default NULL,
|
`nom` char(4) default NULL,
|
||||||
|
@ -3971,4 +3971,13 @@ t2.access_id IN (1,4) AND t.access_id IS NULL AND t2.faq_id in (265);
|
|||||||
faq_id
|
faq_id
|
||||||
265
|
265
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1 (a INT, b INT, KEY inx (b,a));
|
||||||
|
INSERT INTO t1 VALUES (1,1), (1,2), (1,3), (1,4), (1,5), (1, 6), (1,7);
|
||||||
|
EXPLAIN SELECT COUNT(*) FROM t1 f1 INNER JOIN t1 f2
|
||||||
|
ON ( f1.b=f2.b AND f1.a<f2.a )
|
||||||
|
WHERE 1 AND f1.b NOT IN (100,2232,3343,51111);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE f1 index inx inx 10 NULL 7 Using where; Using index
|
||||||
|
1 SIMPLE f2 ref inx inx 5 test.f1.b 1 Using where; Using index
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -8,22 +8,29 @@ create procedure db1_secret.dummy() begin end;
|
|||||||
drop procedure db1_secret.dummy;
|
drop procedure db1_secret.dummy;
|
||||||
use db1_secret;
|
use db1_secret;
|
||||||
create table t1 ( u varchar(64), i int );
|
create table t1 ( u varchar(64), i int );
|
||||||
|
insert into t1 values('test', 0);
|
||||||
create procedure stamp(i int)
|
create procedure stamp(i int)
|
||||||
insert into db1_secret.t1 values (user(), i);
|
insert into db1_secret.t1 values (user(), i);
|
||||||
show procedure status like 'stamp';
|
show procedure status like 'stamp';
|
||||||
Db Name Type Definer Modified Created Security_type Comment
|
Db Name Type Definer Modified Created Security_type Comment
|
||||||
db1_secret stamp PROCEDURE root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER
|
db1_secret stamp PROCEDURE root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER
|
||||||
create function db() returns varchar(64) return database();
|
create function db() returns varchar(64)
|
||||||
|
begin
|
||||||
|
declare v varchar(64);
|
||||||
|
select u into v from t1 limit 1;
|
||||||
|
return v;
|
||||||
|
end|
|
||||||
show function status like 'db';
|
show function status like 'db';
|
||||||
Db Name Type Definer Modified Created Security_type Comment
|
Db Name Type Definer Modified Created Security_type Comment
|
||||||
db1_secret db FUNCTION root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER
|
db1_secret db FUNCTION root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 DEFINER
|
||||||
call stamp(1);
|
call stamp(1);
|
||||||
select * from t1;
|
select * from t1;
|
||||||
u i
|
u i
|
||||||
|
test 0
|
||||||
root@localhost 1
|
root@localhost 1
|
||||||
select db();
|
select db();
|
||||||
db()
|
db()
|
||||||
db1_secret
|
test
|
||||||
grant execute on procedure db1_secret.stamp to user1@'%';
|
grant execute on procedure db1_secret.stamp to user1@'%';
|
||||||
grant execute on function db1_secret.db to user1@'%';
|
grant execute on function db1_secret.db to user1@'%';
|
||||||
grant execute on procedure db1_secret.stamp to ''@'%';
|
grant execute on procedure db1_secret.stamp to ''@'%';
|
||||||
@ -31,25 +38,34 @@ grant execute on function db1_secret.db to ''@'%';
|
|||||||
call db1_secret.stamp(2);
|
call db1_secret.stamp(2);
|
||||||
select db1_secret.db();
|
select db1_secret.db();
|
||||||
db1_secret.db()
|
db1_secret.db()
|
||||||
db1_secret
|
test
|
||||||
select * from db1_secret.t1;
|
select * from db1_secret.t1;
|
||||||
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
|
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
|
||||||
create procedure db1_secret.dummy() begin end;
|
create procedure db1_secret.dummy() begin end;
|
||||||
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
||||||
drop procedure db1_secret.dummy;
|
drop procedure db1_secret.dummy;
|
||||||
ERROR 42000: PROCEDURE db1_secret.dummy does not exist
|
ERROR 42000: PROCEDURE db1_secret.dummy does not exist
|
||||||
|
drop procedure db1_secret.stamp;
|
||||||
|
ERROR 42000: alter routine command denied to user 'user1'@'localhost' for routine 'db1_secret.stamp'
|
||||||
|
drop function db1_secret.db;
|
||||||
|
ERROR 42000: alter routine command denied to user 'user1'@'localhost' for routine 'db1_secret.db'
|
||||||
call db1_secret.stamp(3);
|
call db1_secret.stamp(3);
|
||||||
select db1_secret.db();
|
select db1_secret.db();
|
||||||
db1_secret.db()
|
db1_secret.db()
|
||||||
db1_secret
|
test
|
||||||
select * from db1_secret.t1;
|
select * from db1_secret.t1;
|
||||||
ERROR 42000: SELECT command denied to user ''@'localhost' for table 't1'
|
ERROR 42000: SELECT command denied to user ''@'localhost' for table 't1'
|
||||||
create procedure db1_secret.dummy() begin end;
|
create procedure db1_secret.dummy() begin end;
|
||||||
ERROR 42000: Access denied for user ''@'%' to database 'db1_secret'
|
ERROR 42000: Access denied for user ''@'%' to database 'db1_secret'
|
||||||
drop procedure db1_secret.dummy;
|
drop procedure db1_secret.dummy;
|
||||||
ERROR 42000: PROCEDURE db1_secret.dummy does not exist
|
ERROR 42000: PROCEDURE db1_secret.dummy does not exist
|
||||||
|
drop procedure db1_secret.stamp;
|
||||||
|
ERROR 42000: alter routine command denied to user ''@'%' for routine 'db1_secret.stamp'
|
||||||
|
drop function db1_secret.db;
|
||||||
|
ERROR 42000: alter routine command denied to user ''@'%' for routine 'db1_secret.db'
|
||||||
select * from t1;
|
select * from t1;
|
||||||
u i
|
u i
|
||||||
|
test 0
|
||||||
root@localhost 1
|
root@localhost 1
|
||||||
user1@localhost 2
|
user1@localhost 2
|
||||||
anon@localhost 3
|
anon@localhost 3
|
||||||
@ -64,21 +80,22 @@ db1_secret db FUNCTION root@localhost 0000-00-00 00:00:00 0000-00-00 00:00:00 IN
|
|||||||
call stamp(4);
|
call stamp(4);
|
||||||
select * from t1;
|
select * from t1;
|
||||||
u i
|
u i
|
||||||
|
test 0
|
||||||
root@localhost 1
|
root@localhost 1
|
||||||
user1@localhost 2
|
user1@localhost 2
|
||||||
anon@localhost 3
|
anon@localhost 3
|
||||||
root@localhost 4
|
root@localhost 4
|
||||||
select db();
|
select db();
|
||||||
db()
|
db()
|
||||||
db1_secret
|
test
|
||||||
call db1_secret.stamp(5);
|
call db1_secret.stamp(5);
|
||||||
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
ERROR 42000: INSERT command denied to user 'user1'@'localhost' for table 't1'
|
||||||
select db1_secret.db();
|
select db1_secret.db();
|
||||||
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
|
||||||
call db1_secret.stamp(6);
|
call db1_secret.stamp(6);
|
||||||
ERROR 42000: Access denied for user ''@'%' to database 'db1_secret'
|
ERROR 42000: INSERT command denied to user ''@'localhost' for table 't1'
|
||||||
select db1_secret.db();
|
select db1_secret.db();
|
||||||
ERROR 42000: Access denied for user ''@'%' to database 'db1_secret'
|
ERROR 42000: SELECT command denied to user ''@'localhost' for table 't1'
|
||||||
drop database if exists db2;
|
drop database if exists db2;
|
||||||
create database db2;
|
create database db2;
|
||||||
use db2;
|
use db2;
|
||||||
|
@ -6061,6 +6061,21 @@ SUM(f2) bug25373(f1)
|
|||||||
21.300000071526 NULL
|
21.300000071526 NULL
|
||||||
DROP FUNCTION bug25373|
|
DROP FUNCTION bug25373|
|
||||||
DROP TABLE t3|
|
DROP TABLE t3|
|
||||||
|
DROP DATABASE IF EXISTS mysqltest1|
|
||||||
|
DROP DATABASE IF EXISTS mysqltest2|
|
||||||
|
CREATE DATABASE mysqltest1|
|
||||||
|
CREATE DATABASE mysqltest2|
|
||||||
|
CREATE PROCEDURE mysqltest1.p1()
|
||||||
|
DROP DATABASE mysqltest2|
|
||||||
|
use mysqltest2|
|
||||||
|
CALL mysqltest1.p1()|
|
||||||
|
Warnings:
|
||||||
|
Note 1049 Unknown database 'mysqltest2'
|
||||||
|
SELECT DATABASE()|
|
||||||
|
DATABASE()
|
||||||
|
NULL
|
||||||
|
DROP DATABASE mysqltest1|
|
||||||
|
use test|
|
||||||
drop function if exists bug20777|
|
drop function if exists bug20777|
|
||||||
drop table if exists examplebug20777|
|
drop table if exists examplebug20777|
|
||||||
create function bug20777(f1 bigint unsigned) returns bigint unsigned
|
create function bug20777(f1 bigint unsigned) returns bigint unsigned
|
||||||
@ -6147,3 +6162,28 @@ bug20777(18446744073709551613)+1
|
|||||||
drop function bug20777;
|
drop function bug20777;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 (a int auto_increment primary key) engine=MyISAM;
|
||||||
|
CREATE TABLE t2 (a int auto_increment primary key, b int) engine=innodb;
|
||||||
|
set @a=0;
|
||||||
|
CREATE function bug27354() RETURNS int deterministic
|
||||||
|
begin
|
||||||
|
insert into t1 values (null);
|
||||||
|
set @a=@a+1;
|
||||||
|
return @a;
|
||||||
|
end|
|
||||||
|
update t2 set b=1 where a=bug27354();
|
||||||
|
select count(t_1.a),count(t_2.a) from t1 as t_1, t2 as t_2 /* must be 0,0 */;
|
||||||
|
count(t_1.a) count(t_2.a)
|
||||||
|
0 0
|
||||||
|
insert into t2 values (1,1),(2,2),(3,3);
|
||||||
|
update t2 set b=-b where a=bug27354();
|
||||||
|
select * from t2 /* must return 1,-1 ... */;
|
||||||
|
a b
|
||||||
|
1 -1
|
||||||
|
2 -2
|
||||||
|
3 -3
|
||||||
|
select count(*) from t1 /* must be 3 */;
|
||||||
|
count(*)
|
||||||
|
3
|
||||||
|
drop table t1,t2;
|
||||||
|
drop function bug27354;
|
||||||
|
27
mysql-test/r/sp_trans_log.result
Normal file
27
mysql-test/r/sp_trans_log.result
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
drop function if exists bug23333|
|
||||||
|
drop table if exists t1,t2|
|
||||||
|
CREATE TABLE t1 (a int NOT NULL auto_increment primary key) ENGINE=MyISAM|
|
||||||
|
CREATE TABLE t2 (a int NOT NULL auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB|
|
||||||
|
insert into t2 values (1,1)|
|
||||||
|
create function bug23333()
|
||||||
|
RETURNS int(11)
|
||||||
|
DETERMINISTIC
|
||||||
|
begin
|
||||||
|
insert into t1 values (null);
|
||||||
|
select count(*) from t1 into @a;
|
||||||
|
return @a;
|
||||||
|
end|
|
||||||
|
reset master|
|
||||||
|
insert into t2 values (bug23333(),1)|
|
||||||
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
|
show binlog events from 106 /* with fixes for #23333 will show there is the query */|
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 # Table_map 1 # #
|
||||||
|
master-bin.000001 # Table_map 1 # #
|
||||||
|
master-bin.000001 # Write_rows 1 # #
|
||||||
|
master-bin.000001 # Query 1 # #
|
||||||
|
select count(*),@a from t1 /* must be 1,1 */|
|
||||||
|
count(*) @a
|
||||||
|
1 1
|
||||||
|
drop table t1,t2;
|
||||||
|
drop function if exists bug23333;
|
@ -206,6 +206,8 @@ INSERT INTO t1 (col1) VALUES (STR_TO_DATE('15.10.2004','%d.%m.%Y'));
|
|||||||
INSERT INTO t1 (col2) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col2) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
|
||||||
INSERT INTO t1 (col3) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col3) VALUES (STR_TO_DATE('15.10.2004 10.15','%d.%m.%Y %H.%i'));
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.10.0000 15.30','%d.%m.%Y %H.%i'));
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'col1' at row 1
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('31.0.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
ERROR 22007: Incorrect date value: '2004-00-31 15:30:00' for column 'col1' at row 1
|
ERROR 22007: Incorrect date value: '2004-00-31 15:30:00' for column 'col1' at row 1
|
||||||
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
INSERT INTO t1 (col1) VALUES(STR_TO_DATE('0.10.2004 15.30','%d.%m.%Y %H.%i'));
|
||||||
@ -1386,4 +1388,9 @@ ERROR 01000: Data truncated for column 'a' at row 1
|
|||||||
insert into t1 values ('2E3x');
|
insert into t1 values ('2E3x');
|
||||||
ERROR 01000: Data truncated for column 'a' at row 1
|
ERROR 01000: Data truncated for column 'a' at row 1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set sql_mode='traditional';
|
||||||
|
create table t1 (f1 set('a','a'));
|
||||||
|
ERROR HY000: Column 'f1' has duplicated value 'a' in SET
|
||||||
|
create table t1 (f1 enum('a','a'));
|
||||||
|
ERROR HY000: Column 'f1' has duplicated value 'a' in ENUM
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -48,7 +48,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1276 Field or reference 'a' of SELECT #3 was resolved in SELECT #1
|
Note 1276 Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
|
||||||
Note 1276 Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
|
Note 1276 Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
|
||||||
Note 1003 select 1 AS `1` from (select 1 AS `a`) `b` having ((select '1' AS `a`) = 1)
|
Note 1003 select 1 AS `1` from (select 1 AS `a`) `b` having ((select '1' AS `a`) = 1)
|
||||||
SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
|
SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
|
||||||
@ -330,7 +330,7 @@ patient_uq clinic_uq
|
|||||||
explain extended select * from t6 where exists (select * from t7 where uq = clinic_uq);
|
explain extended select * from t6 where exists (select * from t7 where uq = clinic_uq);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t6 ALL NULL NULL NULL NULL 4 100.00 Using where
|
1 PRIMARY t6 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||||
2 DEPENDENT SUBQUERY t7 eq_ref PRIMARY PRIMARY 4 t6.clinic_uq 1 100.00 Using where; Using index
|
2 DEPENDENT SUBQUERY t7 eq_ref PRIMARY PRIMARY 4 test.t6.clinic_uq 1 100.00 Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1276 Field or reference 'test.t6.clinic_uq' of SELECT #2 was resolved in SELECT #1
|
Note 1276 Field or reference 'test.t6.clinic_uq' of SELECT #2 was resolved in SELECT #1
|
||||||
Note 1003 select `test`.`t6`.`patient_uq` AS `patient_uq`,`test`.`t6`.`clinic_uq` AS `clinic_uq` from `test`.`t6` where exists(select 1 AS `Not_used` from `test`.`t7` where (`test`.`t7`.`uq` = `test`.`t6`.`clinic_uq`))
|
Note 1003 select `test`.`t6`.`patient_uq` AS `patient_uq`,`test`.`t6`.`clinic_uq` AS `clinic_uq` from `test`.`t6` where exists(select 1 AS `Not_used` from `test`.`t7` where (`test`.`t7`.`uq` = `test`.`t6`.`clinic_uq`))
|
||||||
@ -1741,7 +1741,7 @@ Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`text` AS `text` from `tes
|
|||||||
explain extended select * from t1 as tt where not exists (select id from t1 where id < 8 and (id = tt.id or id is null) having id is not null);
|
explain extended select * from t1 as tt where not exists (select id from t1 where id < 8 and (id = tt.id or id is null) having id is not null);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY tt ALL NULL NULL NULL NULL 12 100.00 Using where
|
1 PRIMARY tt ALL NULL NULL NULL NULL 12 100.00 Using where
|
||||||
2 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 tt.id 1 100.00 Using where; Using index
|
2 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 test.tt.id 1 100.00 Using where; Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1276 Field or reference 'test.tt.id' of SELECT #2 was resolved in SELECT #1
|
Note 1276 Field or reference 'test.tt.id' of SELECT #2 was resolved in SELECT #1
|
||||||
Note 1003 select `test`.`tt`.`id` AS `id`,`test`.`tt`.`text` AS `text` from `test`.`t1` `tt` where (not(exists(select `test`.`t1`.`id` AS `id` from `test`.`t1` where ((`test`.`t1`.`id` < 8) and (`test`.`t1`.`id` = `test`.`tt`.`id`)) having (`test`.`t1`.`id` is not null))))
|
Note 1003 select `test`.`tt`.`id` AS `id`,`test`.`tt`.`text` AS `text` from `test`.`t1` `tt` where (not(exists(select `test`.`t1`.`id` AS `id` from `test`.`t1` where ((`test`.`t1`.`id` < 8) and (`test`.`t1`.`id` = `test`.`tt`.`id`)) having (`test`.`t1`.`id` is not null))))
|
||||||
@ -3924,6 +3924,71 @@ c a (SELECT GROUP_CONCAT(COUNT(a)+1) FROM t2 WHERE m = a)
|
|||||||
3 3 4
|
3 3 4
|
||||||
1 4 2,2
|
1 4 2,2
|
||||||
DROP table t1,t2;
|
DROP table t1,t2;
|
||||||
|
CREATE TABLE t1 (a int, b INT, d INT, c CHAR(10) NOT NULL, PRIMARY KEY (a, b));
|
||||||
|
INSERT INTO t1 VALUES (1,1,0,'a'), (1,2,0,'b'), (1,3,0,'c'), (1,4,0,'d'),
|
||||||
|
(1,5,0,'e'), (2,1,0,'f'), (2,2,0,'g'), (2,3,0,'h'), (3,4,0,'i'), (3,3,0,'j'),
|
||||||
|
(3,2,0,'k'), (3,1,0,'l'), (1,9,0,'m'), (1,0,10,'n'), (2,0,5,'o'), (3,0,7,'p');
|
||||||
|
SELECT a, MAX(b),
|
||||||
|
(SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=MAX(t1.b + 0)) as test
|
||||||
|
FROM t1 GROUP BY a;
|
||||||
|
a MAX(b) test
|
||||||
|
1 9 m
|
||||||
|
2 3 h
|
||||||
|
3 4 i
|
||||||
|
SELECT a x, MAX(b),
|
||||||
|
(SELECT t.c FROM t1 AS t WHERE x=t.a AND t.b=MAX(t1.b + 0)) as test
|
||||||
|
FROM t1 GROUP BY a;
|
||||||
|
x MAX(b) test
|
||||||
|
1 9 m
|
||||||
|
2 3 h
|
||||||
|
3 4 i
|
||||||
|
SELECT a, AVG(b),
|
||||||
|
(SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=AVG(t1.b)) AS test
|
||||||
|
FROM t1 WHERE t1.d=0 GROUP BY a;
|
||||||
|
a AVG(b) test
|
||||||
|
1 4.0000 d
|
||||||
|
2 2.0000 g
|
||||||
|
3 2.5000 NULL
|
||||||
|
SELECT tt.a,
|
||||||
|
(SELECT (SELECT c FROM t1 as t WHERE t1.a=t.a AND t.d=MAX(t1.b + tt.a)
|
||||||
|
LIMIT 1) FROM t1 WHERE t1.a=tt.a GROUP BY a LIMIT 1) as test
|
||||||
|
FROM t1 as tt;
|
||||||
|
a test
|
||||||
|
1 n
|
||||||
|
1 n
|
||||||
|
1 n
|
||||||
|
1 n
|
||||||
|
1 n
|
||||||
|
1 n
|
||||||
|
1 n
|
||||||
|
2 o
|
||||||
|
2 o
|
||||||
|
2 o
|
||||||
|
2 o
|
||||||
|
3 p
|
||||||
|
3 p
|
||||||
|
3 p
|
||||||
|
3 p
|
||||||
|
3 p
|
||||||
|
SELECT tt.a,
|
||||||
|
(SELECT (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.d=MAX(t1.b + tt.a)
|
||||||
|
LIMIT 1)
|
||||||
|
FROM t1 WHERE t1.a=tt.a GROUP BY a LIMIT 1) as test
|
||||||
|
FROM t1 as tt GROUP BY tt.a;
|
||||||
|
a test
|
||||||
|
1 n
|
||||||
|
2 o
|
||||||
|
3 p
|
||||||
|
SELECT tt.a, MAX(
|
||||||
|
(SELECT (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.d=MAX(t1.b + tt.a)
|
||||||
|
LIMIT 1)
|
||||||
|
FROM t1 WHERE t1.a=tt.a GROUP BY a LIMIT 1)) as test
|
||||||
|
FROM t1 as tt GROUP BY tt.a;
|
||||||
|
a test
|
||||||
|
1 n
|
||||||
|
2 o
|
||||||
|
3 p
|
||||||
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a int, b int);
|
CREATE TABLE t1 (a int, b int);
|
||||||
INSERT INTO t1 VALUES (2,22),(1,11),(2,22);
|
INSERT INTO t1 VALUES (2,22),(1,11),(2,22);
|
||||||
SELECT a FROM t1 WHERE (SELECT COUNT(b) FROM DUAL) > 0 GROUP BY a;
|
SELECT a FROM t1 WHERE (SELECT COUNT(b) FROM DUAL) > 0 GROUP BY a;
|
||||||
|
@ -432,7 +432,7 @@ alter table t1 add index idx(oref,ie);
|
|||||||
explain select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2;
|
explain select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2;
|
||||||
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 PRIMARY t2 ALL NULL NULL NULL NULL 7
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 7
|
||||||
2 DEPENDENT SUBQUERY t1 ref_or_null idx idx 10 t2.oref,func 4 Using where; Using index; Full scan on NULL key
|
2 DEPENDENT SUBQUERY t1 ref_or_null idx idx 10 test.t2.oref,func 4 Using where; Using index; Full scan on NULL key
|
||||||
select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2;
|
select oref, a, a in (select ie from t1 where oref=t2.oref) Z from t2;
|
||||||
oref a Z
|
oref a Z
|
||||||
ee NULL NULL
|
ee NULL NULL
|
||||||
@ -457,7 +457,7 @@ group by grp having min(ie) > 1) Z
|
|||||||
from t2;
|
from t2;
|
||||||
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 PRIMARY t2 ALL NULL NULL NULL NULL 7
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 7
|
||||||
2 DEPENDENT SUBQUERY t1 ref idx idx 5 t2.oref 2 Using where; Using temporary; Using filesort
|
2 DEPENDENT SUBQUERY t1 ref idx idx 5 test.t2.oref 2 Using where; Using temporary; Using filesort
|
||||||
select oref, a,
|
select oref, a,
|
||||||
a in (select min(ie) from t1 where oref=t2.oref
|
a in (select min(ie) from t1 where oref=t2.oref
|
||||||
group by grp having min(ie) > 1) Z
|
group by grp having min(ie) > 1) Z
|
||||||
|
@ -53,3 +53,30 @@ a
|
|||||||
3
|
3
|
||||||
4
|
4
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1 (s1 int);
|
||||||
|
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
||||||
|
create view v1 as select * from t1;
|
||||||
|
truncate table v1;
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
0
|
||||||
|
insert into t1 (s1) values (1), (2), (3), (4), (5);
|
||||||
|
create view v2 as select * from t1 where s1 > 3;
|
||||||
|
truncate table v2;
|
||||||
|
select * from t1;
|
||||||
|
s1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
select * from v2;
|
||||||
|
s1
|
||||||
|
delete from t1;
|
||||||
|
create table t2 (s1 int, s2 int);
|
||||||
|
create view v3 as select a.s1, b.s2 from t1 a join t2 b on a.s1 = b.s1 where a.s1 > 3;
|
||||||
|
truncate table v3;
|
||||||
|
ERROR HY000: Can not delete from join view 'test.v3'
|
||||||
|
create view v4 as select * from t1 limit 1,1;
|
||||||
|
truncate table v4;
|
||||||
|
ERROR HY000: The target table v4 of the TRUNCATE is not updatable
|
||||||
|
drop view v1, v2, v3, v4;
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -110,3 +110,29 @@ select 1 from t1 where cast('2000-01-01 12:01:01' as datetime) between start_dat
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
select @d:=1111, year(@d), month(@d), day(@d), cast(@d as date);
|
||||||
|
@d:=1111 year(@d) month(@d) day(@d) cast(@d as date)
|
||||||
|
1111 2000 11 11 2000-11-11
|
||||||
|
select @d:=011111, year(@d), month(@d), day(@d), cast(@d as date);
|
||||||
|
@d:=011111 year(@d) month(@d) day(@d) cast(@d as date)
|
||||||
|
11111 2001 11 11 2001-11-11
|
||||||
|
select @d:=1311, year(@d), month(@d), day(@d), cast(@d as date);
|
||||||
|
@d:=1311 year(@d) month(@d) day(@d) cast(@d as date)
|
||||||
|
1311 NULL NULL NULL NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Incorrect datetime value: '1311'
|
||||||
|
Warning 1292 Incorrect datetime value: '1311'
|
||||||
|
Warning 1292 Incorrect datetime value: '1311'
|
||||||
|
Warning 1292 Incorrect datetime value: '1311'
|
||||||
|
create table t1 (d date , dt datetime , ts timestamp);
|
||||||
|
insert into t1 values (9912101,9912101,9912101);
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'd' at row 1
|
||||||
|
Warning 1264 Out of range value for column 'dt' at row 1
|
||||||
|
Warning 1265 Data truncated for column 'ts' at row 1
|
||||||
|
insert into t1 values (11111,11111,11111);
|
||||||
|
select * from t1;
|
||||||
|
d dt ts
|
||||||
|
0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00
|
||||||
|
2001-11-11 2001-11-11 00:00:00 2001-11-11 00:00:00
|
||||||
|
drop table t1;
|
||||||
|
@ -192,3 +192,38 @@ CAST(CAST('2006-08-10 10:11:12' AS DATETIME) + INTERVAL 14 MICROSECOND AS DECIMA
|
|||||||
SELECT CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6));
|
SELECT CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6));
|
||||||
CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6))
|
CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6))
|
||||||
101112.098700
|
101112.098700
|
||||||
|
set @org_mode=@@sql_mode;
|
||||||
|
create table t1 (da date default '1962-03-03 23:33:34', dt datetime default '1962-03-03');
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'da' at row 1
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`da` date DEFAULT '1962-03-03',
|
||||||
|
`dt` datetime DEFAULT '1962-03-03 00:00:00'
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
insert into t1 values ();
|
||||||
|
insert into t1 values ('2007-03-23 13:49:38','2007-03-23 13:49:38');
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'da' at row 1
|
||||||
|
set @@sql_mode='ansi,traditional';
|
||||||
|
insert into t1 values ('2007-03-23 13:49:38','2007-03-23 13:49:38');
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'da' at row 1
|
||||||
|
insert into t1 set dt='2007-03-23 13:49:38',da=dt;
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'da' at row 1
|
||||||
|
insert into t1 values ('2007-03-32','2007-03-23 13:49:38');
|
||||||
|
ERROR 22007: Incorrect date value: '2007-03-32' for column 'da' at row 1
|
||||||
|
select * from t1;
|
||||||
|
da dt
|
||||||
|
1962-03-03 1962-03-03 00:00:00
|
||||||
|
2007-03-23 2007-03-23 13:49:38
|
||||||
|
2007-03-23 2007-03-23 13:49:38
|
||||||
|
2007-03-23 2007-03-23 13:49:38
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (da date default '1962-03-32 23:33:34', dt datetime default '1962-03-03');
|
||||||
|
ERROR 42000: Invalid default value for 'da'
|
||||||
|
create table t1 (t time default '916:00:00 a');
|
||||||
|
ERROR 42000: Invalid default value for 't'
|
||||||
|
set @@sql_mode= @org_mode;
|
||||||
|
@ -2385,6 +2385,16 @@ Table Op Msg_type Msg_text
|
|||||||
test.v1 optimize error 'test.v1' is not BASE TABLE
|
test.v1 optimize error 'test.v1' is not BASE TABLE
|
||||||
Warnings:
|
Warnings:
|
||||||
Error 1347 'test.v1' is not BASE TABLE
|
Error 1347 'test.v1' is not BASE TABLE
|
||||||
|
ANALYZE TABLE v1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.v1 analyze error 'test.v1' is not BASE TABLE
|
||||||
|
Warnings:
|
||||||
|
Error 1347 'test.v1' is not BASE TABLE
|
||||||
|
REPAIR TABLE v1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.v1 repair error 'test.v1' is not BASE TABLE
|
||||||
|
Warnings:
|
||||||
|
Error 1347 'test.v1' is not BASE TABLE
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
create definer = current_user() sql security invoker view v1 as select 1;
|
create definer = current_user() sql security invoker view v1 as select 1;
|
||||||
show create view v1;
|
show create view v1;
|
||||||
|
@ -284,15 +284,6 @@ create view mysqltest.v3 as select b from mysqltest.t2;
|
|||||||
grant create view, update on mysqltest.v3 to mysqltest_1@localhost;
|
grant create view, update on mysqltest.v3 to mysqltest_1@localhost;
|
||||||
drop view mysqltest.v3;
|
drop view mysqltest.v3;
|
||||||
create view mysqltest.v3 as select b from mysqltest.t2;
|
create view mysqltest.v3 as select b from mysqltest.t2;
|
||||||
grant create view, update, insert on mysqltest.v3 to mysqltest_1@localhost;
|
|
||||||
drop view mysqltest.v3;
|
|
||||||
create view mysqltest.v3 as select b from mysqltest.t2;
|
|
||||||
ERROR 42000: create view command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 'v3'
|
|
||||||
create table mysqltest.v3 (b int);
|
|
||||||
grant select(b) on mysqltest.v3 to mysqltest_1@localhost;
|
|
||||||
drop table mysqltest.v3;
|
|
||||||
create view mysqltest.v3 as select b from mysqltest.t2;
|
|
||||||
ERROR 42000: create view command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 'v3'
|
|
||||||
create view v4 as select b+1 from mysqltest.t2;
|
create view v4 as select b+1 from mysqltest.t2;
|
||||||
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 't2'
|
ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for column 'b' in table 't2'
|
||||||
grant create view,update,select on test.* to mysqltest_1@localhost;
|
grant create view,update,select on test.* to mysqltest_1@localhost;
|
||||||
@ -796,6 +787,94 @@ View Create View
|
|||||||
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS select `t1`.`f2` AS `f2` from `t1`
|
v3 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v3` AS select `t1`.`f2` AS `f2` from `t1`
|
||||||
DROP USER u26813@localhost;
|
DROP USER u26813@localhost;
|
||||||
DROP DATABASE db26813;
|
DROP DATABASE db26813;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest1;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest2;
|
||||||
|
CREATE DATABASE mysqltest1;
|
||||||
|
CREATE DATABASE mysqltest2;
|
||||||
|
CREATE TABLE mysqltest1.t1(c1 INT);
|
||||||
|
CREATE TABLE mysqltest1.t2(c2 INT);
|
||||||
|
CREATE TABLE mysqltest1.t3(c3 INT);
|
||||||
|
CREATE TABLE mysqltest1.t4(c4 INT);
|
||||||
|
INSERT INTO mysqltest1.t1 VALUES (11), (12), (13), (14);
|
||||||
|
INSERT INTO mysqltest1.t2 VALUES (21), (22), (23), (24);
|
||||||
|
INSERT INTO mysqltest1.t3 VALUES (31), (32), (33), (34);
|
||||||
|
INSERT INTO mysqltest1.t4 VALUES (41), (42), (43), (44);
|
||||||
|
GRANT SELECT ON mysqltest1.t1 TO mysqltest_u1@localhost;
|
||||||
|
GRANT INSERT ON mysqltest1.t2 TO mysqltest_u1@localhost;
|
||||||
|
GRANT SELECT, UPDATE ON mysqltest1.t3 TO mysqltest_u1@localhost;
|
||||||
|
GRANT SELECT, DELETE ON mysqltest1.t4 TO mysqltest_u1@localhost;
|
||||||
|
GRANT ALL PRIVILEGES ON mysqltest2.* TO mysqltest_u1@localhost;
|
||||||
|
|
||||||
|
---> connection: bug24040_con
|
||||||
|
SELECT * FROM mysqltest1.t1;
|
||||||
|
c1
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
INSERT INTO mysqltest1.t2 VALUES(25);
|
||||||
|
UPDATE mysqltest1.t3 SET c3 = 331 WHERE c3 = 31;
|
||||||
|
DELETE FROM mysqltest1.t4 WHERE c4 = 44;
|
||||||
|
CREATE VIEW v1 AS SELECT * FROM mysqltest1.t1;
|
||||||
|
CREATE VIEW v2 AS SELECT * FROM mysqltest1.t2;
|
||||||
|
CREATE VIEW v3 AS SELECT * FROM mysqltest1.t3;
|
||||||
|
CREATE VIEW v4 AS SELECT * FROM mysqltest1.t4;
|
||||||
|
SELECT * FROM v1;
|
||||||
|
c1
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
INSERT INTO v2 VALUES(26);
|
||||||
|
UPDATE v3 SET c3 = 332 WHERE c3 = 32;
|
||||||
|
DELETE FROM v4 WHERE c4 = 43;
|
||||||
|
CREATE VIEW v12 AS SELECT c1, c2 FROM mysqltest1.t1, mysqltest1.t2;
|
||||||
|
ERROR 42000: create view command denied to user 'mysqltest_u1'@'localhost' for column 'c2' in table 'v12'
|
||||||
|
CREATE VIEW v13 AS SELECT c1, c3 FROM mysqltest1.t1, mysqltest1.t3;
|
||||||
|
CREATE VIEW v14 AS SELECT c1, c4 FROM mysqltest1.t1, mysqltest1.t4;
|
||||||
|
CREATE VIEW v21 AS SELECT c2, c1 FROM mysqltest1.t2, mysqltest1.t1;
|
||||||
|
ERROR 42000: create view command denied to user 'mysqltest_u1'@'localhost' for column 'c1' in table 'v21'
|
||||||
|
CREATE VIEW v23 AS SELECT c2, c3 FROM mysqltest1.t2, mysqltest1.t3;
|
||||||
|
ERROR 42000: create view command denied to user 'mysqltest_u1'@'localhost' for column 'c3' in table 'v23'
|
||||||
|
CREATE VIEW v24 AS SELECT c2, c4 FROM mysqltest1.t2, mysqltest1.t4;
|
||||||
|
ERROR 42000: create view command denied to user 'mysqltest_u1'@'localhost' for column 'c4' in table 'v24'
|
||||||
|
CREATE VIEW v31 AS SELECT c3, c1 FROM mysqltest1.t3, mysqltest1.t1;
|
||||||
|
CREATE VIEW v32 AS SELECT c3, c2 FROM mysqltest1.t3, mysqltest1.t2;
|
||||||
|
ERROR 42000: create view command denied to user 'mysqltest_u1'@'localhost' for column 'c2' in table 'v32'
|
||||||
|
CREATE VIEW v34 AS SELECT c3, c4 FROM mysqltest1.t3, mysqltest1.t4;
|
||||||
|
CREATE VIEW v41 AS SELECT c4, c1 FROM mysqltest1.t4, mysqltest1.t1;
|
||||||
|
CREATE VIEW v42 AS SELECT c4, c2 FROM mysqltest1.t4, mysqltest1.t2;
|
||||||
|
ERROR 42000: create view command denied to user 'mysqltest_u1'@'localhost' for column 'c2' in table 'v42'
|
||||||
|
CREATE VIEW v43 AS SELECT c4, c3 FROM mysqltest1.t4, mysqltest1.t3;
|
||||||
|
|
||||||
|
---> connection: default
|
||||||
|
SELECT * FROM mysqltest1.t1;
|
||||||
|
c1
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
SELECT * FROM mysqltest1.t2;
|
||||||
|
c2
|
||||||
|
21
|
||||||
|
22
|
||||||
|
23
|
||||||
|
24
|
||||||
|
25
|
||||||
|
26
|
||||||
|
SELECT * FROM mysqltest1.t3;
|
||||||
|
c3
|
||||||
|
331
|
||||||
|
332
|
||||||
|
33
|
||||||
|
34
|
||||||
|
SELECT * FROM mysqltest1.t4;
|
||||||
|
c4
|
||||||
|
41
|
||||||
|
42
|
||||||
|
DROP DATABASE mysqltest1;
|
||||||
|
DROP DATABASE mysqltest2;
|
||||||
|
DROP USER mysqltest_u1@localhost;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
DROP VIEW IF EXISTS v1;
|
DROP VIEW IF EXISTS v1;
|
||||||
DROP TABLE IF EXISTS t1;
|
DROP TABLE IF EXISTS t1;
|
||||||
|
@ -6,6 +6,6 @@
|
|||||||
. updated with each new version --- THIS IS INTENDED!
|
. updated with each new version --- THIS IS INTENDED!
|
||||||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
funcs_1 checked with version: 5.1.16
|
funcs_1 checked with version: 5.1.17
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1548 Leading spaces are removed from name ' '
|
Warning 1548 Leading spaces are removed from name ' '
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
################################################################################
|
################################################################################
|
||||||
# t/partition_supported_sql_funcs.inc # #
|
# t/partition_supported_sql_funcs.inc # # #
|
||||||
# Purpose: #
|
# Purpose: #
|
||||||
# Tests around sql functions #
|
# Tests frame for allowed sql functions #
|
||||||
# #
|
# #
|
||||||
# #
|
# #
|
||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
@ -83,24 +83,23 @@ eval insert into t3 values ($val1);
|
|||||||
eval insert into t3 values ($val2);
|
eval insert into t3 values ($val2);
|
||||||
eval insert into t3 values ($val3);
|
eval insert into t3 values ($val3);
|
||||||
|
|
||||||
eval insert into t4 values (1,$val1);
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
eval insert into t4 values (2,$val2);
|
eval load data infile '$MYSQL_TEST_DIR/suite/partitions/include/$infile' into table t4;
|
||||||
|
|
||||||
eval insert into t5 values (1,$val1);
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
eval insert into t5 values (2,$val2);
|
eval load data infile '$MYSQL_TEST_DIR/suite/partitions/include/$infile' into table t5;
|
||||||
eval insert into t5 values (3,$val3);
|
|
||||||
|
|
||||||
eval insert into t6 values (1,$val2);
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
eval insert into t6 values (2,$val3);
|
eval load data infile '$MYSQL_TEST_DIR/suite/partitions/include/$infile' into table t6;
|
||||||
|
|
||||||
eval select $sqlfunc from t1;
|
eval select $sqlfunc from t1 order by col1;
|
||||||
|
|
||||||
select * from t1;
|
select * from t1 order by col1;
|
||||||
select * from t2;
|
select * from t2 order by col1;
|
||||||
select * from t3;
|
select * from t3 order by col1;
|
||||||
select * from t4;
|
select * from t4 order by colint;
|
||||||
select * from t5;
|
select * from t5 order by colint;
|
||||||
select * from t6;
|
select * from t6 order by colint;
|
||||||
|
|
||||||
if ($do_long_tests)
|
if ($do_long_tests)
|
||||||
{
|
{
|
||||||
@ -111,12 +110,12 @@ if ($do_long_tests)
|
|||||||
eval update t5 set col1=$val4 where col1=$val1;
|
eval update t5 set col1=$val4 where col1=$val1;
|
||||||
eval update t6 set col1=$val4 where col1=$val1;
|
eval update t6 set col1=$val4 where col1=$val1;
|
||||||
|
|
||||||
select * from t1;
|
select * from t1 order by col1;
|
||||||
select * from t2;
|
select * from t2 order by col1;
|
||||||
select * from t3;
|
select * from t3 order by col1;
|
||||||
select * from t4;
|
select * from t4 order by colint;
|
||||||
select * from t5;
|
select * from t5 order by colint;
|
||||||
select * from t6;
|
select * from t6 order by colint;
|
||||||
}
|
}
|
||||||
|
|
||||||
--echo -------------------------------------------------------------------------
|
--echo -------------------------------------------------------------------------
|
||||||
@ -175,46 +174,63 @@ partition by range(colint)
|
|||||||
(partition p0 values less than ($valsqlfunc),
|
(partition p0 values less than ($valsqlfunc),
|
||||||
partition p1 values less than maxvalue);
|
partition p1 values less than maxvalue);
|
||||||
|
|
||||||
select * from t11;
|
select * from t11 order by col1;
|
||||||
select * from t22;
|
select * from t22 order by col1;
|
||||||
select * from t33;
|
select * from t33 order by col1;
|
||||||
select * from t44;
|
select * from t44 order by colint;
|
||||||
select * from t55;
|
select * from t55 order by colint;
|
||||||
select * from t66;
|
select * from t66 order by colint;
|
||||||
|
|
||||||
if ($do_long_tests)
|
if ($do_long_tests)
|
||||||
{
|
{
|
||||||
|
--echo ---------------------------
|
||||||
|
--echo ---- some alter table begin
|
||||||
|
--echo ---------------------------
|
||||||
eval alter table t11
|
eval alter table t11
|
||||||
reorganize partition p0,p1 into
|
reorganize partition p0,p1 into
|
||||||
(partition s1 values less than maxvalue);
|
(partition s1 values less than maxvalue);
|
||||||
select * from t11;
|
select * from t11 order by col1;
|
||||||
|
|
||||||
eval alter table t11
|
eval alter table t11
|
||||||
reorganize partition s1 into
|
reorganize partition s1 into
|
||||||
(partition p0 values less than (15),
|
(partition p0 values less than (15),
|
||||||
partition p1 values less than maxvalue);
|
partition p1 values less than maxvalue);
|
||||||
select * from t11;
|
select * from t11 order by col1;
|
||||||
|
|
||||||
|
eval alter table t55
|
||||||
|
partition by list(colint)
|
||||||
|
subpartition by hash($sqlfunc) subpartitions 5
|
||||||
|
(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
|
||||||
|
partition p1 values in (11,12,13,14,15,16,17,18,19,20),
|
||||||
|
partition p2 values in (21,22,23,24,25,26,27,28,29,30),
|
||||||
|
partition p3 values in (31,32,33,34,35,36,37,38,39,40),
|
||||||
|
partition p4 values in (41,42,43,44,45,46,47,48,49,50),
|
||||||
|
partition p5 values in (51,52,53,54,55,56,57,58,59,60)
|
||||||
|
);
|
||||||
|
show create table t55;
|
||||||
|
select * from t55 order by colint;
|
||||||
|
|
||||||
eval alter table t66
|
eval alter table t66
|
||||||
reorganize partition p0,p1 into
|
reorganize partition p0,p1 into
|
||||||
(partition s1 values less than maxvalue);
|
(partition s1 values less than maxvalue);
|
||||||
select * from t66;
|
select * from t66 order by colint;
|
||||||
|
|
||||||
eval alter table t66
|
eval alter table t66
|
||||||
reorganize partition s1 into
|
reorganize partition s1 into
|
||||||
(partition p0 values less than ($valsqlfunc),
|
(partition p0 values less than ($valsqlfunc),
|
||||||
partition p1 values less than maxvalue);
|
partition p1 values less than maxvalue);
|
||||||
select * from t66;
|
select * from t66 order by colint;
|
||||||
|
|
||||||
eval alter table t66
|
eval alter table t66
|
||||||
reorganize partition p0,p1 into
|
reorganize partition p0,p1 into
|
||||||
(partition s1 values less than maxvalue);
|
(partition s1 values less than maxvalue);
|
||||||
select * from t66;
|
select * from t66 order by colint;
|
||||||
|
|
||||||
eval alter table t66
|
eval alter table t66
|
||||||
add partition s0
|
reorganize partition s1 into
|
||||||
(partition p0 values less than ($valsqlfunc);
|
(partition p0 values less than ($valsqlfunc),
|
||||||
select * fromt t66;
|
partition p1 values less than maxvalue);
|
||||||
|
select * from t66 order by colint;
|
||||||
|
|
||||||
let $t1=t1;
|
let $t1=t1;
|
||||||
let $t2=t2;
|
let $t2=t2;
|
||||||
@ -233,6 +249,9 @@ if ($do_long_tests)
|
|||||||
let $t6=t66;
|
let $t6=t66;
|
||||||
--source suite/partitions/include/partition_supported_sql_funcs_delete.inc
|
--source suite/partitions/include/partition_supported_sql_funcs_delete.inc
|
||||||
# --source include/partition_supported_sql_funcs_delete.inc
|
# --source include/partition_supported_sql_funcs_delete.inc
|
||||||
|
--echo -------------------------
|
||||||
|
--echo ---- some alter table end
|
||||||
|
--echo -------------------------
|
||||||
}
|
}
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1 ;
|
drop table if exists t1 ;
|
||||||
|
@ -1,3 +1,16 @@
|
|||||||
|
################################################################################
|
||||||
|
# t/partition_supported_sql_funcs_delete.inc # # #
|
||||||
|
# Purpose: #
|
||||||
|
# Delete access of the tests frame for allowed sql functions #
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
#------------------------------------------------------------------------------#
|
||||||
|
# Original Author: HH #
|
||||||
|
# Original Date: 2006-11-22 #
|
||||||
|
# Change Author: #
|
||||||
|
# Change Date: #
|
||||||
|
# Change: #
|
||||||
|
################################################################################
|
||||||
--echo -------------------------------------------------------------------------
|
--echo -------------------------------------------------------------------------
|
||||||
--echo --- Delete rows and partitions of tables with $sqlfunc
|
--echo --- Delete rows and partitions of tables with $sqlfunc
|
||||||
--echo -------------------------------------------------------------------------
|
--echo -------------------------------------------------------------------------
|
||||||
@ -9,25 +22,25 @@ eval delete from $t4 where col1=$val2;
|
|||||||
eval delete from $t5 where col1=$val2;
|
eval delete from $t5 where col1=$val2;
|
||||||
eval delete from $t6 where col1=$val2;
|
eval delete from $t6 where col1=$val2;
|
||||||
|
|
||||||
eval select * from $t1;
|
eval select * from $t1 order by col1;
|
||||||
eval select * from $t2;
|
eval select * from $t2 order by col1;
|
||||||
eval select * from $t3;
|
eval select * from $t3 order by col1;
|
||||||
eval select * from $t4;
|
eval select * from $t4 order by colint;
|
||||||
eval select * from $t5;
|
eval select * from $t5 order by colint;
|
||||||
|
|
||||||
eval insert into $t1 values ($val2);
|
eval insert into $t1 values ($val2);
|
||||||
eval insert into $t2 values ($val2);
|
eval insert into $t2 values ($val2);
|
||||||
eval insert into $t3 values ($val2);
|
eval insert into $t3 values ($val2);
|
||||||
eval insert into $t4 values (4,$val2);
|
eval insert into $t4 values (60,$val2);
|
||||||
eval insert into $t5 values (4,$val2);
|
eval insert into $t5 values (60,$val2);
|
||||||
eval insert into $t6 values (4,$val2);
|
eval insert into $t6 values (60,$val2);
|
||||||
|
|
||||||
eval select * from $t1;
|
eval select * from $t1 order by col1;
|
||||||
eval select * from $t2;
|
eval select * from $t2 order by col1;
|
||||||
eval select * from $t3;
|
eval select * from $t3 order by col1;
|
||||||
eval select * from $t4;
|
eval select * from $t4 order by colint;
|
||||||
eval select * from $t5;
|
eval select * from $t5 order by colint;
|
||||||
eval select * from $t6;
|
eval select * from $t6 order by colint;
|
||||||
|
|
||||||
eval alter table $t1 drop partition p0;
|
eval alter table $t1 drop partition p0;
|
||||||
eval alter table $t2 drop partition p0;
|
eval alter table $t2 drop partition p0;
|
||||||
@ -35,9 +48,9 @@ eval alter table $t4 drop partition p0;
|
|||||||
eval alter table $t5 drop partition p0;
|
eval alter table $t5 drop partition p0;
|
||||||
eval alter table $t6 drop partition p0;
|
eval alter table $t6 drop partition p0;
|
||||||
|
|
||||||
eval select * from $t1;
|
eval select * from $t1 order by col1;
|
||||||
eval select * from $t2;
|
eval select * from $t2 order by col1;
|
||||||
eval select * from $t3;
|
eval select * from $t3 order by col1;
|
||||||
eval select * from $t4;
|
eval select * from $t4 order by colint;
|
||||||
eval select * from $t5;
|
eval select * from $t5 order by colint;
|
||||||
eval select * from $t6;
|
eval select * from $t6 order by colint;
|
||||||
|
@ -0,0 +1,4 @@
|
|||||||
|
1 1
|
||||||
|
2 9
|
||||||
|
3 3
|
||||||
|
4 8
|
@ -0,0 +1,4 @@
|
|||||||
|
1 2006-02-03
|
||||||
|
2 2006-01-17
|
||||||
|
3 2006-01-25
|
||||||
|
4 2006-02-05
|
@ -0,0 +1,4 @@
|
|||||||
|
1 5.1230
|
||||||
|
2 13.345
|
||||||
|
3 17.987
|
||||||
|
4 15.654
|
@ -0,0 +1,45 @@
|
|||||||
|
1 5
|
||||||
|
2 13
|
||||||
|
3 15
|
||||||
|
4 17
|
||||||
|
5 23
|
||||||
|
6 34
|
||||||
|
7 56
|
||||||
|
8 56
|
||||||
|
9 45
|
||||||
|
10 34
|
||||||
|
11 78
|
||||||
|
12 89
|
||||||
|
13 67
|
||||||
|
14 46
|
||||||
|
15 34
|
||||||
|
16 324
|
||||||
|
17 345
|
||||||
|
18 34
|
||||||
|
19 78
|
||||||
|
20 567
|
||||||
|
21 4
|
||||||
|
22 435
|
||||||
|
23 34
|
||||||
|
24 45
|
||||||
|
25 4565
|
||||||
|
26 4
|
||||||
|
27 3
|
||||||
|
28 2
|
||||||
|
29 3
|
||||||
|
30 5
|
||||||
|
31 6
|
||||||
|
32 8
|
||||||
|
33 9
|
||||||
|
34 745
|
||||||
|
35 34
|
||||||
|
36 34
|
||||||
|
37 324
|
||||||
|
38 67
|
||||||
|
39 78
|
||||||
|
40 89
|
||||||
|
41 90
|
||||||
|
42 78967
|
||||||
|
50 56
|
||||||
|
51 34
|
||||||
|
55 123
|
@ -0,0 +1,4 @@
|
|||||||
|
1 09:09:15.000002
|
||||||
|
2 04:30:01.000018
|
||||||
|
3 00:59:22.000024
|
||||||
|
4 05:30:34.000037
|
@ -2,7 +2,7 @@
|
|||||||
# t/partition_supported_sql_funcs_main.inc #
|
# t/partition_supported_sql_funcs_main.inc #
|
||||||
# #
|
# #
|
||||||
# Purpose: #
|
# Purpose: #
|
||||||
# Tests around sql functions #
|
# Tests which SQL functions are allowed in partinioning clauses. #
|
||||||
# #
|
# #
|
||||||
# #
|
# #
|
||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
@ -11,12 +11,28 @@
|
|||||||
# Change Author: #
|
# Change Author: #
|
||||||
# Change Date: #
|
# Change Date: #
|
||||||
# Change: #
|
# Change: #
|
||||||
|
# #
|
||||||
|
# This test uses a test frame (partition_supported_sql_funcs.inc) for every #
|
||||||
|
# SQL function allowed in the partitioning parts of CREATE and ALTE TABLE. #
|
||||||
|
# The variales represent the #
|
||||||
|
# - SQL function isself with a column (sqlfunc) and a literal (valsqlsunc), #
|
||||||
|
# - the type of the column (coltype), #
|
||||||
|
# - a file with test values of the coltype (infile) and #
|
||||||
|
# - single test values (val1 to val4). #
|
||||||
|
# The test frame includes CREATE/ALTER TABLE and some access statements. #
|
||||||
|
# Column types are int, float(7,4), char(1), date and time depending on the #
|
||||||
|
# SQL function. The test frame uses the include file #
|
||||||
|
# "partition_supported_sql_funcs_delete.inc" testing the deletion of #
|
||||||
|
# partitions. #
|
||||||
|
# The CREATE and ALTER TABLE statement do not cover the complete partitions #
|
||||||
|
# functions, but will ashure that the SQL functions are basically working. #
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
|
||||||
let $sqlfunc = abs(col1);
|
let $sqlfunc = abs(col1);
|
||||||
let $valsqlfunc = abs(15);
|
let $valsqlfunc = abs(15);
|
||||||
let $coltype = int;
|
let $coltype = int;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_int.in;
|
||||||
let $val1 = 5 ;
|
let $val1 = 5 ;
|
||||||
let $val2 = 13 ;
|
let $val2 = 13 ;
|
||||||
let $val3 = 17 ;
|
let $val3 = 17 ;
|
||||||
@ -27,6 +43,7 @@ let $val4 = 15 ;
|
|||||||
let $sqlfunc = ascii(col1);
|
let $sqlfunc = ascii(col1);
|
||||||
let $valsqlfunc = ascii('5');
|
let $valsqlfunc = ascii('5');
|
||||||
let $coltype = char(1);
|
let $coltype = char(1);
|
||||||
|
let $infile = partition_supported_sql_funcs_int_ch1.in;
|
||||||
let $val1 = '1';
|
let $val1 = '1';
|
||||||
let $val2 = '9';
|
let $val2 = '9';
|
||||||
let $val3 = '3';
|
let $val3 = '3';
|
||||||
@ -37,6 +54,7 @@ let $val4 = '8';
|
|||||||
let $sqlfunc = cast(ceiling(col1) as signed integer);
|
let $sqlfunc = cast(ceiling(col1) as signed integer);
|
||||||
let $valsqlfunc = cast(ceiling(15) as signed integer);
|
let $valsqlfunc = cast(ceiling(15) as signed integer);
|
||||||
let $coltype = float(7,4);
|
let $coltype = float(7,4);
|
||||||
|
let $infile = partition_supported_sql_funcs_int_float.in;
|
||||||
let $val1 = 5.1230;
|
let $val1 = 5.1230;
|
||||||
let $val2 = 13.345;
|
let $val2 = 13.345;
|
||||||
let $val3 = 17.987;
|
let $val3 = 17.987;
|
||||||
@ -47,6 +65,7 @@ let $val4 = 15.654 ;
|
|||||||
let $sqlfunc = cast(floor(col1) as signed);
|
let $sqlfunc = cast(floor(col1) as signed);
|
||||||
let $valsqlfunc = cast(floor(15.123) as signed);
|
let $valsqlfunc = cast(floor(15.123) as signed);
|
||||||
let $coltype = float(7,4);
|
let $coltype = float(7,4);
|
||||||
|
let $infile = partition_supported_sql_funcs_int_float.in;
|
||||||
let $val1 = 5.1230;
|
let $val1 = 5.1230;
|
||||||
let $val2 = 13.345;
|
let $val2 = 13.345;
|
||||||
let $val3 = 17.987;
|
let $val3 = 17.987;
|
||||||
@ -57,6 +76,7 @@ let $val4 = 15.654 ;
|
|||||||
let $sqlfunc = cast(mod(col1,10) as signed);
|
let $sqlfunc = cast(mod(col1,10) as signed);
|
||||||
let $valsqlfunc = cast(mod(15,10) as signed);
|
let $valsqlfunc = cast(mod(15,10) as signed);
|
||||||
let $coltype = float(7,4);
|
let $coltype = float(7,4);
|
||||||
|
let $infile = partition_supported_sql_funcs_int_float.in;
|
||||||
let $val1 = 5.0000;
|
let $val1 = 5.0000;
|
||||||
let $val2 = 19;
|
let $val2 = 19;
|
||||||
let $val3 = 17;
|
let $val3 = 17;
|
||||||
@ -67,6 +87,7 @@ let $val4 = 15 ;
|
|||||||
let $sqlfunc = ord(col1);
|
let $sqlfunc = ord(col1);
|
||||||
let $valsqlfunc = ord('a');
|
let $valsqlfunc = ord('a');
|
||||||
let $coltype = char(3);
|
let $coltype = char(3);
|
||||||
|
let $infile = partition_supported_sql_funcs_int_ch1.in;
|
||||||
let $val1 = '1';
|
let $val1 = '1';
|
||||||
let $val2 = '9';
|
let $val2 = '9';
|
||||||
let $val3 = '3';
|
let $val3 = '3';
|
||||||
@ -77,6 +98,7 @@ let $val4 = '8';
|
|||||||
let $sqlfunc = day(col1);
|
let $sqlfunc = day(col1);
|
||||||
let $valsqlfunc = day('2006-12-21');
|
let $valsqlfunc = day('2006-12-21');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-02-03';
|
let $val1 = '2006-02-03';
|
||||||
let $val2 = '2006-01-17';
|
let $val2 = '2006-01-17';
|
||||||
let $val3 = '2006-01-25';
|
let $val3 = '2006-01-25';
|
||||||
@ -87,6 +109,7 @@ let $val4 = '2006-02-05';
|
|||||||
let $sqlfunc = dayofmonth(col1);
|
let $sqlfunc = dayofmonth(col1);
|
||||||
let $valsqlfunc = dayofmonth('2006-12-24');
|
let $valsqlfunc = dayofmonth('2006-12-24');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-02-03';
|
let $val1 = '2006-02-03';
|
||||||
let $val2 = '2006-01-17';
|
let $val2 = '2006-01-17';
|
||||||
let $val3 = '2006-01-25';
|
let $val3 = '2006-01-25';
|
||||||
@ -97,6 +120,7 @@ let $val4 = '2006-02-05';
|
|||||||
let $sqlfunc = dayofweek(col1);
|
let $sqlfunc = dayofweek(col1);
|
||||||
let $valsqlfunc = dayofweek('2006-12-24');
|
let $valsqlfunc = dayofweek('2006-12-24');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-01-03';
|
let $val1 = '2006-01-03';
|
||||||
let $val2 = '2006-02-17';
|
let $val2 = '2006-02-17';
|
||||||
let $val3 = '2006-01-25';
|
let $val3 = '2006-01-25';
|
||||||
@ -107,6 +131,7 @@ let $val4 = '2006-02-05';
|
|||||||
let $sqlfunc = dayofyear(col1);
|
let $sqlfunc = dayofyear(col1);
|
||||||
let $valsqlfunc = dayofyear('2006-12-25');
|
let $valsqlfunc = dayofyear('2006-12-25');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-01-03';
|
let $val1 = '2006-01-03';
|
||||||
let $val2 = '2006-01-17';
|
let $val2 = '2006-01-17';
|
||||||
let $val3 = '2006-02-25';
|
let $val3 = '2006-02-25';
|
||||||
@ -120,6 +145,7 @@ let $coltype = char(30);
|
|||||||
let $sqlfunc = extract(month from col1);
|
let $sqlfunc = extract(month from col1);
|
||||||
let $valsqlfunc = extract(year from '1998-11-23');
|
let $valsqlfunc = extract(year from '1998-11-23');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-01-03';
|
let $val1 = '2006-01-03';
|
||||||
let $val2 = '2006-02-17';
|
let $val2 = '2006-02-17';
|
||||||
let $val3 = '2006-01-25';
|
let $val3 = '2006-01-25';
|
||||||
@ -130,6 +156,7 @@ let $val4 = '2006-02-05';
|
|||||||
let $sqlfunc = hour(col1);
|
let $sqlfunc = hour(col1);
|
||||||
let $valsqlfunc = hour('18:30');
|
let $valsqlfunc = hour('18:30');
|
||||||
let $coltype = time;
|
let $coltype = time;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_time.in;
|
||||||
let $val1 = '09:09';
|
let $val1 = '09:09';
|
||||||
let $val2 = '14:30';
|
let $val2 = '14:30';
|
||||||
let $val3 = '21:59';
|
let $val3 = '21:59';
|
||||||
@ -140,6 +167,7 @@ let $val4 = '10:30';
|
|||||||
let $sqlfunc = microsecond(col1);
|
let $sqlfunc = microsecond(col1);
|
||||||
let $valsqlfunc = microsecond('10:30:10.000010');
|
let $valsqlfunc = microsecond('10:30:10.000010');
|
||||||
let $coltype = time;
|
let $coltype = time;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_time.in;
|
||||||
let $val1 = '09:09:15.000002';
|
let $val1 = '09:09:15.000002';
|
||||||
let $val2 = '04:30:01.000018';
|
let $val2 = '04:30:01.000018';
|
||||||
let $val3 = '00:59:22.000024';
|
let $val3 = '00:59:22.000024';
|
||||||
@ -160,6 +188,7 @@ let $val4 = '10:24:23';
|
|||||||
let $sqlfunc = second(col1);
|
let $sqlfunc = second(col1);
|
||||||
let $valsqlfunc = second('18:30:14');
|
let $valsqlfunc = second('18:30:14');
|
||||||
let $coltype = time;
|
let $coltype = time;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_time.in;
|
||||||
let $val1 = '09:09:09';
|
let $val1 = '09:09:09';
|
||||||
let $val2 = '14:30:20';
|
let $val2 = '14:30:20';
|
||||||
let $val3 = '21:59:22';
|
let $val3 = '21:59:22';
|
||||||
@ -173,6 +202,7 @@ let $coltype = char(30);
|
|||||||
let $sqlfunc = month(col1);
|
let $sqlfunc = month(col1);
|
||||||
let $valsqlfunc = month('2006-10-14');
|
let $valsqlfunc = month('2006-10-14');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-01-03';
|
let $val1 = '2006-01-03';
|
||||||
let $val2 = '2006-12-17';
|
let $val2 = '2006-12-17';
|
||||||
let $val3 = '2006-05-25';
|
let $val3 = '2006-05-25';
|
||||||
@ -183,6 +213,7 @@ let $val4 = '2006-11-06';
|
|||||||
let $sqlfunc = quarter(col1);
|
let $sqlfunc = quarter(col1);
|
||||||
let $valsqlfunc = quarter('2006-10-14');
|
let $valsqlfunc = quarter('2006-10-14');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-01-03';
|
let $val1 = '2006-01-03';
|
||||||
let $val2 = '2006-12-17';
|
let $val2 = '2006-12-17';
|
||||||
let $val3 = '2006-09-25';
|
let $val3 = '2006-09-25';
|
||||||
@ -193,6 +224,7 @@ let $val4 = '2006-07-30';
|
|||||||
let $sqlfunc = time_to_sec(col1)-(time_to_sec(col1)-20);
|
let $sqlfunc = time_to_sec(col1)-(time_to_sec(col1)-20);
|
||||||
let $valsqlfunc = time_to_sec('18:30:14')-(time_to_sec('17:59:59'));
|
let $valsqlfunc = time_to_sec('18:30:14')-(time_to_sec('17:59:59'));
|
||||||
let $coltype = time;
|
let $coltype = time;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_time.in;
|
||||||
let $val1 = '09:09:15';
|
let $val1 = '09:09:15';
|
||||||
let $val2 = '14:30:45';
|
let $val2 = '14:30:45';
|
||||||
let $val3 = '21:59:22';
|
let $val3 = '21:59:22';
|
||||||
@ -203,6 +235,7 @@ let $val4 = '10:33:11';
|
|||||||
let $sqlfunc = to_days(col1)-to_days('2006-01-01');
|
let $sqlfunc = to_days(col1)-to_days('2006-01-01');
|
||||||
let $valsqlfunc = to_days('2006-02-02')-to_days('2006-01-01');
|
let $valsqlfunc = to_days('2006-02-02')-to_days('2006-01-01');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-02-03';
|
let $val1 = '2006-02-03';
|
||||||
let $val2 = '2006-01-17';
|
let $val2 = '2006-01-17';
|
||||||
let $val3 = '2006-01-25';
|
let $val3 = '2006-01-25';
|
||||||
@ -213,6 +246,7 @@ let $val4 = '2006-02-06';
|
|||||||
let $sqlfunc = weekday(col1);
|
let $sqlfunc = weekday(col1);
|
||||||
let $valsqlfunc = weekday('2006-10-14');
|
let $valsqlfunc = weekday('2006-10-14');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-12-03';
|
let $val1 = '2006-12-03';
|
||||||
let $val2 = '2006-11-17';
|
let $val2 = '2006-11-17';
|
||||||
let $val3 = '2006-05-25';
|
let $val3 = '2006-05-25';
|
||||||
@ -223,6 +257,7 @@ let $val4 = '2006-02-06';
|
|||||||
let $sqlfunc = weekofyear(col1);
|
let $sqlfunc = weekofyear(col1);
|
||||||
let $valsqlfunc = weekofyear('2006-02-14');
|
let $valsqlfunc = weekofyear('2006-02-14');
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-01-03';
|
let $val1 = '2006-01-03';
|
||||||
let $val2 = '2006-03-17';
|
let $val2 = '2006-03-17';
|
||||||
let $val3 = '2006-05-25';
|
let $val3 = '2006-05-25';
|
||||||
@ -233,6 +268,7 @@ let $val4 = '2006-09-06';
|
|||||||
let $sqlfunc = year(col1)-1990;
|
let $sqlfunc = year(col1)-1990;
|
||||||
let $valsqlfunc = year('2005-10-14')-1990;
|
let $valsqlfunc = year('2005-10-14')-1990;
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '1996-01-03';
|
let $val1 = '1996-01-03';
|
||||||
let $val2 = '2000-02-17';
|
let $val2 = '2000-02-17';
|
||||||
let $val3 = '2004-05-25';
|
let $val3 = '2004-05-25';
|
||||||
@ -243,6 +279,7 @@ let $val4 = '2002-02-15';
|
|||||||
let $sqlfunc = yearweek(col1)-200600;
|
let $sqlfunc = yearweek(col1)-200600;
|
||||||
let $valsqlfunc = yearweek('2006-10-14')-200600;
|
let $valsqlfunc = yearweek('2006-10-14')-200600;
|
||||||
let $coltype = date;
|
let $coltype = date;
|
||||||
|
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||||
let $val1 = '2006-01-03';
|
let $val1 = '2006-01-03';
|
||||||
let $val2 = '2006-08-17';
|
let $val2 = '2006-08-17';
|
||||||
let $val3 = '2006-03-25';
|
let $val3 = '2006-03-25';
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
13724
mysql-test/suite/partitions/r/partition_supported_sql_func_ndb.result
Normal file
13724
mysql-test/suite/partitions/r/partition_supported_sql_func_ndb.result
Normal file
File diff suppressed because it is too large
Load Diff
68
mysql-test/suite/partitions/r/partition_t55.out
Normal file
68
mysql-test/suite/partitions/r/partition_t55.out
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
show create table t55;
|
||||||
|
Table Create Table
|
||||||
|
t55 CREATE TABLE `t55` (
|
||||||
|
`colint` int(11) DEFAULT NULL,
|
||||||
|
`col1` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (abs(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
|
||||||
|
27 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp0.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp0.MYI
|
||||||
|
18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp1.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp1.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp2.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp2.MYI
|
||||||
|
18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp3.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp3.MYI
|
||||||
|
18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp4.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp4.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp0.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp0.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp1.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp1.MYI
|
||||||
|
18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp2.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp2.MYI
|
||||||
|
18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp3.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp3.MYI
|
||||||
|
36 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp4.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp4.MYI
|
||||||
|
36 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp0.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp0.MYI
|
||||||
|
0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp1.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp1.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp2.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp2.MYI
|
||||||
|
18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp3.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp3.MYI
|
||||||
|
27 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp4.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp4.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp0.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp0.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp1.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp1.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp2.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp2.MYI
|
||||||
|
18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp3.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp3.MYI
|
||||||
|
45 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp4.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp4.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp0.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp0.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp1.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp1.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp2.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp2.MYI
|
||||||
|
0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp3.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp3.MYI
|
||||||
|
0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp4.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp4.MYI
|
||||||
|
0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp0.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp0.MYI
|
||||||
|
0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp1.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp1.MYI
|
||||||
|
0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp2.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp2.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp3.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp3.MYI
|
||||||
|
9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp4.MYD
|
||||||
|
1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp4.MYI
|
||||||
|
8594 MYSQL_TEST_DIR/var/master-data/test/t55.frm
|
||||||
|
408 MYSQL_TEST_DIR/var/master-data/test/t55.par
|
@ -13,4 +13,4 @@ partition_alter2_ndb : cannot create t1
|
|||||||
partition_char_innodb : crash. Bug? More investigations
|
partition_char_innodb : crash. Bug? More investigations
|
||||||
partition_sessions : needs system_3_init.inc
|
partition_sessions : needs system_3_init.inc
|
||||||
partition_engine_ndb : cannot create t1
|
partition_engine_ndb : cannot create t1
|
||||||
|
partition_supported_sql_func_ndb : cannot create t1
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# t/partition_supported_sql_funcs_innodb.test #
|
# t/partition_supported_sql_funcs_innodb.test #
|
||||||
# #
|
# #
|
||||||
# Purpose: #
|
# Purpose: #
|
||||||
# Tests around sql functions #
|
# Tests which SQL functions are allowed in partinioning clauses with #
|
||||||
# INNODB branch #
|
# INNODB. #
|
||||||
# #
|
# #
|
||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
# Original Author: HH #
|
# Original Author: HH #
|
||||||
@ -18,16 +18,12 @@
|
|||||||
# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
|
# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
|
||||||
# THE SOURCED FILES ONLY.
|
# THE SOURCED FILES ONLY.
|
||||||
#
|
#
|
||||||
# Please read the README at the end of include/partition.pre before changing
|
|
||||||
# any of the variables.
|
|
||||||
#
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
# General not engine specific settings and requirements
|
# General not engine specific settings and requirements
|
||||||
|
|
||||||
##### Options, for debugging support #####
|
##### Options, for debugging support #####
|
||||||
let $debug= 0;
|
let $debug= 0;
|
||||||
let $do_long_tests= 0;
|
let $do_long_tests= 1;
|
||||||
|
|
||||||
# The server must support partitioning.
|
# The server must support partitioning.
|
||||||
--source include/have_partition.inc
|
--source include/have_partition.inc
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# t/partition_supported_sql_funcs_myisam.test #
|
# t/partition_supported_sql_funcs_myisam.test #
|
||||||
# #
|
# #
|
||||||
# Purpose: #
|
# Purpose: #
|
||||||
# Tests around sql functions #
|
# Tests which SQL functions are allowed in partinioning clauses with #
|
||||||
# MyISAM branch #
|
# MYISAM. #
|
||||||
# #
|
# #
|
||||||
#------------------------------------------------------------------------------#
|
#------------------------------------------------------------------------------#
|
||||||
# Original Author: HH #
|
# Original Author: HH #
|
||||||
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
##### Options, for debugging support #####
|
##### Options, for debugging support #####
|
||||||
let $debug= 0;
|
let $debug= 0;
|
||||||
let $do_long_tests= 0;
|
let $do_long_tests= 1;
|
||||||
|
|
||||||
# The server must support partitioning.
|
# The server must support partitioning.
|
||||||
--source include/have_partition.inc
|
--source include/have_partition.inc
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
################################################################################
|
||||||
|
# t/partition_supported_sql_funcs_myisam.test #
|
||||||
|
# #
|
||||||
|
# Purpose: #
|
||||||
|
# Tests which SQL functions are allowed in partinioning clauses with #
|
||||||
|
# NDB. #
|
||||||
|
# #
|
||||||
|
#------------------------------------------------------------------------------#
|
||||||
|
# Original Author: HH #
|
||||||
|
# Original Date: 2006-11-22 #
|
||||||
|
# Change Author: #
|
||||||
|
# Change Date: #
|
||||||
|
# Change: #
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: PLEASE DO NOT ADD NOT NDB SPECIFIC TESTCASES HERE !
|
||||||
|
# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
|
||||||
|
# THE SOURCED FILES ONLY.
|
||||||
|
#------------------------------------------------------------------------------#
|
||||||
|
# General not engine specific settings and requirements
|
||||||
|
|
||||||
|
##### Options, for debugging support #####
|
||||||
|
let $debug= 0;
|
||||||
|
let $do_long_tests= 1;
|
||||||
|
|
||||||
|
# The server must support partitioning.
|
||||||
|
--source include/have_partition.inc
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------#
|
||||||
|
# Engine specific settings and requirements
|
||||||
|
|
||||||
|
--source include/have_ndb.inc
|
||||||
|
##### Storage engine to be tested
|
||||||
|
let $engine= 'NDB';
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------------#
|
||||||
|
--source suite/partitions/include/partition_supported_sql_funcs_main.inc
|
||||||
|
# --source include/partition_supported_sql_funcs_main.inc
|
||||||
|
|
83
mysql-test/suite/row_lock/include/row_lock.inc
Normal file
83
mysql-test/suite/row_lock/include/row_lock.inc
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
eval $indext2;
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
|
||||||
|
# Both transaction are able to update the tables
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
94
mysql-test/suite/row_lock/include/row_lock_big_tab.inc
Normal file
94
mysql-test/suite/row_lock/include/row_lock_big_tab.inc
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
eval $indext2;
|
||||||
|
DELIMITER |;
|
||||||
|
CREATE PROCEDURE fill_t1 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t1() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT count(*)/2 INTO res FROM t1;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE PROCEDURE fill_t2 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t2() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT count(*)/2 INTO res FROM t2;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
DELIMITER ;|
|
||||||
|
CALL fill_t1 (10);
|
||||||
|
CALL fill_t2 (10);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
# With the two separate selects (without join) the differs from
|
||||||
|
# that select with join.
|
||||||
|
|
||||||
|
# Both transaction are able to update the tables
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT k from t1 WHERE k < half_t1();
|
||||||
|
SELECT k from t1 WHERE k >= half_t1();
|
||||||
|
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k < half_t1() AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k >= half_t1() AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#DROP VIEW v1;
|
||||||
|
|
93
mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc
Normal file
93
mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
eval $indext2;
|
||||||
|
DELIMITER |;
|
||||||
|
CREATE PROCEDURE fill_t1 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t1() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT MOD(k,2) INTO res FROM t1;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE PROCEDURE fill_t2 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t2() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT MOD(k,2) INTO res FROM t2;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
DELIMITER ;|
|
||||||
|
eval CALL fill_t1 ($nbrows);
|
||||||
|
eval CALL fill_t2 ($nbrows);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
# With the two separate selects (without join) the differs from
|
||||||
|
# that select with join.
|
||||||
|
|
||||||
|
# Both transaction are able to update the tables
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k LOCK IN SHARE MODE;
|
||||||
|
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k % 2 = 1 AND t1.k = t2.k;
|
||||||
|
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
|
||||||
|
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
|
93
mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc
Normal file
93
mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
eval $indext2;
|
||||||
|
DELIMITER |;
|
||||||
|
CREATE PROCEDURE fill_t1 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t1() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT MOD(k,2) INTO res FROM t1;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE PROCEDURE fill_t2 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t2() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT MOD(k,2) INTO res FROM t2;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
DELIMITER ;|
|
||||||
|
eval CALL fill_t1 ($nbrows);
|
||||||
|
eval CALL fill_t2 ($nbrows);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
# With the two separate selects (without join) the differs from
|
||||||
|
# that select with join.
|
||||||
|
|
||||||
|
# Both transaction are able to update the tables
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
#SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k FOR UPDATE;
|
||||||
|
DELETE FROM t1 WHERE t1.k % 2 = 1;
|
||||||
|
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
|
||||||
|
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
|
96
mysql-test/suite/row_lock/include/row_lock_trig.inc
Normal file
96
mysql-test/suite/row_lock/include/row_lock_trig.inc
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
eval $indext2;
|
||||||
|
DELIMITER |;
|
||||||
|
|
||||||
|
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
|
||||||
|
DELIMITER ;|
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
# With the two separate selects (without join) the differs from
|
||||||
|
# that select with join.
|
||||||
|
|
||||||
|
# Both transaction are able to update the tables
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#DROP VIEW v1;
|
||||||
|
|
89
mysql-test/suite/row_lock/include/row_lock_view.inc
Normal file
89
mysql-test/suite/row_lock/include/row_lock_view.inc
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
eval $indext2;
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
# With the two separate selects (without join) the differs from
|
||||||
|
# that select with join.
|
||||||
|
|
||||||
|
# Both transaction are able to update the tables
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE v1 SET i=325 where i=125;
|
||||||
|
SELECT * FROM v1 ORDER BY i,l;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE v1 SET i=323 where i=123;
|
||||||
|
SELECT * FROM v1 ORDER BY i,l;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE v1 SET i=326 where i=126;
|
||||||
|
SELECT * FROM v1 ORDER BY i,l;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE v1 SET i=324 where i=124;
|
||||||
|
SELECT * FROM v1 ORDER BY i,l;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#DROP VIEW v1;
|
||||||
|
|
92
mysql-test/suite/row_lock/include/row_lock_view_mix.inc
Normal file
92
mysql-test/suite/row_lock/include/row_lock_view_mix.inc
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
eval $indext2;
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
# With the two separate selects (without join) the differs from
|
||||||
|
# that select with join.
|
||||||
|
|
||||||
|
# Both transaction are able to update the tables
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
#UPDATE v1 SET i=325 where i=125;
|
||||||
|
#SELECT * FROM v1 ORDER BY i,l;
|
||||||
|
#SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE v1 SET i=323 where i=123;
|
||||||
|
SELECT * FROM v1 ORDER BY i,l;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE v1 SET i=324 where i=124;
|
||||||
|
SELECT * FROM v1 ORDER BY i,l;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#DROP VIEW v1;
|
||||||
|
|
126
mysql-test/suite/row_lock/include/row_lock_view_storedp.inc
Normal file
126
mysql-test/suite/row_lock/include/row_lock_view_storedp.inc
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
DROP PROCEDURE IF EXISTS stp_t;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
CONNECT (root2, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
INSERT INTO t1 VALUES (5,127,5,127);
|
||||||
|
INSERT INTO t1 VALUES (6,128,6,128);
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
INSERT INTO t2 VALUES (5,127,5,127);
|
||||||
|
INSERT INTO t2 VALUES (6,128,6,128);
|
||||||
|
eval $indext2;
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i from t1;
|
||||||
|
DELIMITER |;
|
||||||
|
|
||||||
|
CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
|
||||||
|
BEGIN
|
||||||
|
UPDATE t2 SET i = p2 WHERE i = p1;
|
||||||
|
UPDATE v1 SET i = p2 WHERE i = p1;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
|
||||||
|
DELIMITER ;|
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
CALL stp_t (125, 225);
|
||||||
|
|
||||||
|
--echo connection root2;
|
||||||
|
CONNECTION root2;
|
||||||
|
CALL stp_t (127, 227);
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
CALL stp_t (123, 223);
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
CALL stp_t (126, 226);
|
||||||
|
|
||||||
|
--echo connection root2;
|
||||||
|
CONNECTION root2;
|
||||||
|
CALL stp_t (128, 228);
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
CALL stp_t (124, 224);
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root2;
|
||||||
|
CONNECTION root2;
|
||||||
|
DELETE FROM t1 WHERE t1.i=228;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
|
||||||
|
--echo connection root2;
|
||||||
|
CONNECTION root2;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
DISCONNECT root2;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
--disable_warnings
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP PROCEDURE stp_t;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
--enable_warnings
|
99
mysql-test/suite/row_lock/include/row_lock_view_trig.inc
Normal file
99
mysql-test/suite/row_lock/include/row_lock_view_trig.inc
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
--enable_warnings
|
||||||
|
SET autocommit=0;
|
||||||
|
# Create additional connections used through test
|
||||||
|
CONNECT (root1, localhost, root,,);
|
||||||
|
SET autocommit=0;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
eval $indext1;
|
||||||
|
eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
eval $indext2;
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i from t1;
|
||||||
|
DELIMITER |;
|
||||||
|
|
||||||
|
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
|
||||||
|
DELIMITER ;|
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
eval EXPLAIN $select;
|
||||||
|
eval $select;
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
ROLLBACK;
|
||||||
|
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
|
||||||
|
--echo connection root1;
|
||||||
|
CONNECTION root1;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
DISCONNECT root1;
|
||||||
|
--echo connection default;
|
||||||
|
CONNECTION default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
DROP VIEW v1;
|
||||||
|
|
142
mysql-test/suite/row_lock/r/innodb_row_lock_1.result
Normal file
142
mysql-test/suite/row_lock/r/innodb_row_lock_1.result
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
|
||||||
|
1 SIMPLE t2 ref ixi ixi 5 test.t1.i 2 Using where; Using index
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
|
||||||
|
i i
|
||||||
|
123 123
|
||||||
|
124 124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection default;
|
||||||
|
UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
connection default;
|
||||||
|
UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
connection default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
COMMIT;
|
||||||
|
connection root1;
|
||||||
|
ROLLBACK;
|
||||||
|
connection default;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET @@global.innodb_table_locks= @table_locks;
|
32
mysql-test/suite/row_lock/r/innodb_row_lock_2.result
Normal file
32
mysql-test/suite/row_lock/r/innodb_row_lock_2.result
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
#CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
#CREATE INDEX ixi ON t2 (i);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
|
||||||
|
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 t2 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
|
||||||
|
i i
|
||||||
|
123 123
|
||||||
|
124 124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
32
mysql-test/suite/row_lock/r/innodb_row_lock_3.result
Normal file
32
mysql-test/suite/row_lock/r/innodb_row_lock_3.result
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
#CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
#CREATE INDEX ixi ON t2 (i);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
|
||||||
|
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 t2 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
|
||||||
|
i i
|
||||||
|
123 123
|
||||||
|
124 124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
142
mysql-test/suite/row_lock/r/innodb_row_lock_4.result
Normal file
142
mysql-test/suite/row_lock/r/innodb_row_lock_4.result
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
|
||||||
|
1 SIMPLE t2 ref ixi ixi 5 test.t1.i 2 Using where; Using index
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
|
||||||
|
i i
|
||||||
|
123 123
|
||||||
|
124 124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection default;
|
||||||
|
UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
connection default;
|
||||||
|
UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
connection default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
COMMIT;
|
||||||
|
connection root1;
|
||||||
|
ROLLBACK;
|
||||||
|
connection default;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET @@global.innodb_table_locks= @table_locks;
|
32
mysql-test/suite/row_lock/r/innodb_row_lock_5.result
Normal file
32
mysql-test/suite/row_lock/r/innodb_row_lock_5.result
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
|
||||||
|
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 t2 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
|
||||||
|
i i
|
||||||
|
123 123
|
||||||
|
124 124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
97
mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result
Normal file
97
mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE PROCEDURE fill_t1 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t1() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT count(*)/2 INTO res FROM t1;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE PROCEDURE fill_t2 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t2() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT count(*)/2 INTO res FROM t2;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CALL fill_t1 (10);
|
||||||
|
CALL fill_t2 (10);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 10 Using where; Using index
|
||||||
|
1 SIMPLE t2 ref ixi ixi 5 test.t1.i 1 Using where; Using index
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
|
||||||
|
i i
|
||||||
|
connection root1;
|
||||||
|
SELECT k from t1 WHERE k < half_t1();
|
||||||
|
k
|
||||||
|
0
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
SELECT k from t1 WHERE k >= half_t1();
|
||||||
|
k
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k < half_t1() AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
0 1111 0 100
|
||||||
|
1 1111 1 101
|
||||||
|
2 1111 2 102
|
||||||
|
3 1111 3 103
|
||||||
|
4 1111 4 104
|
||||||
|
5 105 5 105
|
||||||
|
6 106 6 106
|
||||||
|
7 107 7 107
|
||||||
|
8 108 8 108
|
||||||
|
9 109 9 109
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
0 2222 0 100
|
||||||
|
1 2222 1 101
|
||||||
|
2 2222 2 102
|
||||||
|
3 2222 3 103
|
||||||
|
4 2222 4 104
|
||||||
|
5 105 5 105
|
||||||
|
6 106 6 106
|
||||||
|
7 107 7 107
|
||||||
|
8 108 8 108
|
||||||
|
9 109 9 109
|
||||||
|
connection default;
|
||||||
|
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k >= half_t1() AND t2.i=t1.i;
|
145
mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result
Normal file
145
mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE PROCEDURE fill_t1 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t1() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT MOD(k,2) INTO res FROM t1;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE PROCEDURE fill_t2 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t2() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT MOD(k,2) INTO res FROM t2;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CALL fill_t1 (40);
|
||||||
|
CALL fill_t2 (40);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index PRIMARY ixi 5 NULL 40 Using where; Using index
|
||||||
|
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.k 1
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
|
||||||
|
i i
|
||||||
|
100 100
|
||||||
|
102 102
|
||||||
|
104 104
|
||||||
|
106 106
|
||||||
|
108 108
|
||||||
|
110 110
|
||||||
|
112 112
|
||||||
|
114 114
|
||||||
|
116 116
|
||||||
|
118 118
|
||||||
|
120 120
|
||||||
|
122 122
|
||||||
|
124 124
|
||||||
|
126 126
|
||||||
|
128 128
|
||||||
|
130 130
|
||||||
|
132 132
|
||||||
|
134 134
|
||||||
|
136 136
|
||||||
|
138 138
|
||||||
|
connection root1;
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k LOCK IN SHARE MODE;
|
||||||
|
i i
|
||||||
|
101 101
|
||||||
|
103 103
|
||||||
|
105 105
|
||||||
|
107 107
|
||||||
|
109 109
|
||||||
|
111 111
|
||||||
|
113 113
|
||||||
|
115 115
|
||||||
|
117 117
|
||||||
|
119 119
|
||||||
|
121 121
|
||||||
|
123 123
|
||||||
|
125 125
|
||||||
|
127 127
|
||||||
|
129 129
|
||||||
|
131 131
|
||||||
|
133 133
|
||||||
|
135 135
|
||||||
|
137 137
|
||||||
|
139 139
|
||||||
|
UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k % 2 = 1 AND t1.k = t2.k;
|
||||||
|
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
0 100 0 100
|
||||||
|
1 1111 1 101
|
||||||
|
2 102 2 102
|
||||||
|
3 1111 3 103
|
||||||
|
4 104 4 104
|
||||||
|
5 1111 5 105
|
||||||
|
6 106 6 106
|
||||||
|
7 1111 7 107
|
||||||
|
8 108 8 108
|
||||||
|
9 1111 9 109
|
||||||
|
10 110 10 110
|
||||||
|
11 1111 11 111
|
||||||
|
12 112 12 112
|
||||||
|
13 1111 13 113
|
||||||
|
14 114 14 114
|
||||||
|
15 1111 15 115
|
||||||
|
16 116 16 116
|
||||||
|
17 1111 17 117
|
||||||
|
18 118 18 118
|
||||||
|
19 1111 19 119
|
||||||
|
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
0 100 0 100
|
||||||
|
1 2222 1 101
|
||||||
|
2 102 2 102
|
||||||
|
3 2222 3 103
|
||||||
|
4 104 4 104
|
||||||
|
5 2222 5 105
|
||||||
|
6 106 6 106
|
||||||
|
7 2222 7 107
|
||||||
|
8 108 8 108
|
||||||
|
9 2222 9 109
|
||||||
|
10 110 10 110
|
||||||
|
11 2222 11 111
|
||||||
|
12 112 12 112
|
||||||
|
13 2222 13 113
|
||||||
|
14 114 14 114
|
||||||
|
15 2222 15 115
|
||||||
|
16 116 16 116
|
||||||
|
17 2222 17 117
|
||||||
|
18 118 18 118
|
||||||
|
19 2222 19 119
|
||||||
|
connection default;
|
||||||
|
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
|
113
mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result
Normal file
113
mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE PROCEDURE fill_t1 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t1() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT MOD(k,2) INTO res FROM t1;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE PROCEDURE fill_t2 (IN upb int)
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt int DEFAULT 0;
|
||||||
|
WHILE cnt < upb DO
|
||||||
|
INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
|
||||||
|
SET cnt= cnt+1;
|
||||||
|
END WHILE;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CREATE FUNCTION half_t2() RETURNS int
|
||||||
|
BEGIN
|
||||||
|
DECLARE res int DEFAULT 0;
|
||||||
|
SELECT MOD(k,2) INTO res FROM t2;
|
||||||
|
RETURN res;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
CALL fill_t1 (40);
|
||||||
|
CALL fill_t2 (40);
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index PRIMARY ixi 5 NULL 40 Using where; Using index
|
||||||
|
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.k 1
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
|
||||||
|
i i
|
||||||
|
100 100
|
||||||
|
102 102
|
||||||
|
104 104
|
||||||
|
106 106
|
||||||
|
108 108
|
||||||
|
110 110
|
||||||
|
112 112
|
||||||
|
114 114
|
||||||
|
116 116
|
||||||
|
118 118
|
||||||
|
120 120
|
||||||
|
122 122
|
||||||
|
124 124
|
||||||
|
126 126
|
||||||
|
128 128
|
||||||
|
130 130
|
||||||
|
132 132
|
||||||
|
134 134
|
||||||
|
136 136
|
||||||
|
138 138
|
||||||
|
connection root1;
|
||||||
|
DELETE FROM t1 WHERE t1.k % 2 = 1;
|
||||||
|
SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
0 100 0 100
|
||||||
|
2 102 2 102
|
||||||
|
4 104 4 104
|
||||||
|
6 106 6 106
|
||||||
|
8 108 8 108
|
||||||
|
10 110 10 110
|
||||||
|
12 112 12 112
|
||||||
|
14 114 14 114
|
||||||
|
16 116 16 116
|
||||||
|
18 118 18 118
|
||||||
|
SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
0 100 0 100
|
||||||
|
1 101 1 101
|
||||||
|
2 102 2 102
|
||||||
|
3 103 3 103
|
||||||
|
4 104 4 104
|
||||||
|
5 105 5 105
|
||||||
|
6 106 6 106
|
||||||
|
7 107 7 107
|
||||||
|
8 108 8 108
|
||||||
|
9 109 9 109
|
||||||
|
10 110 10 110
|
||||||
|
11 111 11 111
|
||||||
|
12 112 12 112
|
||||||
|
13 113 13 113
|
||||||
|
14 114 14 114
|
||||||
|
15 115 15 115
|
||||||
|
16 116 16 116
|
||||||
|
17 117 17 117
|
||||||
|
18 118 18 118
|
||||||
|
19 119 19 119
|
||||||
|
connection default;
|
||||||
|
UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
|
151
mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result
Normal file
151
mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
|
||||||
|
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 225
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection default;
|
||||||
|
UPDATE t2 SET t2.i=223 WHERE t2.i=123;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 223
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
UPDATE t2 SET t2.i=226 WHERE t2.i=126;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 225
|
||||||
|
4 126 4 226
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
connection default;
|
||||||
|
UPDATE t2 SET t2.i=224 WHERE t2.i=124;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 223
|
||||||
|
2 124 2 224
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 225
|
||||||
|
4 126 4 226
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
connection default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 223
|
||||||
|
2 124 2 224
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
COMMIT;
|
||||||
|
connection root1;
|
||||||
|
ROLLBACK;
|
||||||
|
connection default;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 223
|
||||||
|
2 124 2 224
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection root1;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 223
|
||||||
|
2 124 2 224
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
SET @@global.innodb_table_locks= @table_locks;
|
37
mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result
Normal file
37
mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
#CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
#CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
|
||||||
|
FOR EACH ROW BEGIN
|
||||||
|
UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t2 SET t2.i=225 WHERE t2.i=125;
|
34
mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result
Normal file
34
mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
|
||||||
|
1 SIMPLE t2 ref ixi ixi 5 test.t1.i 2 Using where; Using index
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
|
||||||
|
i i
|
||||||
|
123 123
|
||||||
|
124 124
|
||||||
|
connection root1;
|
||||||
|
UPDATE v1 SET i=325 where i=125;
|
40
mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result
Normal file
40
mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
|
||||||
|
1 SIMPLE t2 index NULL PRIMARY 4 NULL 4 Using index
|
||||||
|
SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
123
|
||||||
|
124
|
||||||
|
123
|
||||||
|
124
|
||||||
|
123
|
||||||
|
124
|
||||||
|
connection root1;
|
||||||
|
UPDATE v1 SET i=325 where i=125;
|
@ -0,0 +1,48 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
|
||||||
|
1 SIMPLE t2 ref ixi ixi 5 test.t1.i 2 Using where; Using index
|
||||||
|
SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
|
||||||
|
i i
|
||||||
|
123 123
|
||||||
|
124 124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
connection default;
|
||||||
|
UPDATE v1 SET i=323 where i=123;
|
@ -0,0 +1,40 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
|
||||||
|
1 SIMPLE t2 index NULL PRIMARY 4 NULL 4 Using index
|
||||||
|
SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
123
|
||||||
|
124
|
||||||
|
123
|
||||||
|
124
|
||||||
|
123
|
||||||
|
124
|
||||||
|
connection root1;
|
||||||
|
UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
|
@ -0,0 +1,312 @@
|
|||||||
|
SELECT @@global.innodb_table_locks into @table_locks;
|
||||||
|
SET @@global.innodb_table_locks= OFF;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
SET autocommit=0;
|
||||||
|
connection default;
|
||||||
|
CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t1 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t1 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t1 VALUES (4,126,4,126);
|
||||||
|
INSERT INTO t1 VALUES (5,127,5,127);
|
||||||
|
INSERT INTO t1 VALUES (6,128,6,128);
|
||||||
|
CREATE INDEX ixi ON t1 (i);
|
||||||
|
CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,123,1,123);
|
||||||
|
INSERT INTO t2 VALUES (2,124,2,124);
|
||||||
|
INSERT INTO t2 VALUES (3,125,3,125);
|
||||||
|
INSERT INTO t2 VALUES (4,126,4,126);
|
||||||
|
INSERT INTO t2 VALUES (5,127,5,127);
|
||||||
|
INSERT INTO t2 VALUES (6,128,6,128);
|
||||||
|
CREATE INDEX ixi ON t2 (i);
|
||||||
|
CREATE VIEW v1 AS SELECT t1.i from t1;
|
||||||
|
CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
|
||||||
|
BEGIN
|
||||||
|
UPDATE t2 SET i = p2 WHERE i = p1;
|
||||||
|
UPDATE v1 SET i = p2 WHERE i = p1;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
END;
|
||||||
|
|
|
||||||
|
COMMIT;
|
||||||
|
SELECT @@global.tx_isolation;
|
||||||
|
@@global.tx_isolation
|
||||||
|
REPEATABLE-READ
|
||||||
|
EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index ixi ixi 5 NULL 6 Using where; Using index
|
||||||
|
SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
connection root1;
|
||||||
|
CALL stp_t (125, 225);
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
126
|
||||||
|
127
|
||||||
|
128
|
||||||
|
225
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
connection root2;
|
||||||
|
CALL stp_t (127, 227);
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
125
|
||||||
|
126
|
||||||
|
128
|
||||||
|
227
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 227 5 127
|
||||||
|
6 128 6 128
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 227 5 127
|
||||||
|
6 128 6 128
|
||||||
|
connection default;
|
||||||
|
CALL stp_t (123, 223);
|
||||||
|
i
|
||||||
|
124
|
||||||
|
125
|
||||||
|
126
|
||||||
|
127
|
||||||
|
128
|
||||||
|
223
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
connection root1;
|
||||||
|
CALL stp_t (126, 226);
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
127
|
||||||
|
128
|
||||||
|
225
|
||||||
|
226
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
connection root2;
|
||||||
|
CALL stp_t (128, 228);
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
125
|
||||||
|
126
|
||||||
|
227
|
||||||
|
228
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 227 5 127
|
||||||
|
6 228 6 128
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 227 5 127
|
||||||
|
6 228 6 128
|
||||||
|
connection default;
|
||||||
|
CALL stp_t (124, 224);
|
||||||
|
i
|
||||||
|
125
|
||||||
|
126
|
||||||
|
127
|
||||||
|
128
|
||||||
|
223
|
||||||
|
224
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
connection root1;
|
||||||
|
DELETE FROM t1 WHERE t1.i=226;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 225 3 125
|
||||||
|
4 226 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
connection root2;
|
||||||
|
DELETE FROM t1 WHERE t1.i=228;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 227 5 127
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 227 5 127
|
||||||
|
6 228 6 128
|
||||||
|
connection default;
|
||||||
|
DELETE FROM t1 WHERE t1.i=224;
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
COMMIT;
|
||||||
|
connection root1;
|
||||||
|
ROLLBACK;
|
||||||
|
connection root1;
|
||||||
|
COMMIT;
|
||||||
|
connection default;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
i
|
||||||
|
125
|
||||||
|
126
|
||||||
|
127
|
||||||
|
128
|
||||||
|
223
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
connection root1;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
i
|
||||||
|
125
|
||||||
|
126
|
||||||
|
127
|
||||||
|
128
|
||||||
|
223
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 223 1 123
|
||||||
|
2 224 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 127 5 127
|
||||||
|
6 128 6 128
|
||||||
|
connection root2;
|
||||||
|
SELECT * FROM v1 ORDER BY i;
|
||||||
|
i
|
||||||
|
123
|
||||||
|
124
|
||||||
|
125
|
||||||
|
126
|
||||||
|
227
|
||||||
|
SELECT * FROM t1 ORDER BY t1.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 227 5 127
|
||||||
|
SELECT * FROM t2 ORDER BY t2.k;
|
||||||
|
k i j l
|
||||||
|
1 123 1 123
|
||||||
|
2 124 2 124
|
||||||
|
3 125 3 125
|
||||||
|
4 126 4 126
|
||||||
|
5 227 5 127
|
||||||
|
6 228 6 128
|
||||||
|
connection default;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
DROP VIEW v1;
|
||||||
|
SET @@global.innodb_table_locks= @table_locks;
|
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