mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
Merge romeo.(none):/home/bkroot/mysql-5.1-rpl
into romeo.(none):/home/bk/merge-mysql-5.1
This commit is contained in:
commit
875de0e571
313 changed files with 44240 additions and 3781 deletions
21
.bzrignore
21
.bzrignore
|
@ -354,6 +354,8 @@ client/decimal.c
|
|||
client/insert_test
|
||||
client/log_event.cc
|
||||
client/log_event.h
|
||||
client/log_event_old.cc
|
||||
client/log_event_old.h
|
||||
client/mf_iocache.c
|
||||
client/mf_iocache.cc
|
||||
client/my_decimal.cc
|
||||
|
@ -379,6 +381,9 @@ client/mysqltestmanager-pwgen
|
|||
client/mysqltestmanagerc
|
||||
client/mysys_priv.h
|
||||
client/readline.cpp
|
||||
client/rpl_constants.h
|
||||
client/rpl_record_old.cc
|
||||
client/rpl_record_old.h
|
||||
client/select_test
|
||||
client/sql_string.cpp
|
||||
client/ssl_test
|
||||
|
@ -1087,6 +1092,7 @@ libmysqld/libmysql.c
|
|||
libmysqld/lock.cc
|
||||
libmysqld/log.cc
|
||||
libmysqld/log_event.cc
|
||||
libmysqld/log_event_old.cc
|
||||
libmysqld/md5.c
|
||||
libmysqld/mf_iocache.cc
|
||||
libmysqld/mini_client.cc
|
||||
|
@ -1109,6 +1115,8 @@ libmysqld/records.cc
|
|||
libmysqld/repl_failsafe.cc
|
||||
libmysqld/rpl_filter.cc
|
||||
libmysqld/rpl_injector.cc
|
||||
libmysqld/rpl_record.cc
|
||||
libmysqld/rpl_record_old.cc
|
||||
libmysqld/set_var.cc
|
||||
libmysqld/simple-test
|
||||
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/ndb_trig_03e.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/partition.result
|
||||
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_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/tmp.test
|
||||
mysql-test/var
|
||||
|
@ -2956,11 +2969,3 @@ win/vs71cache.txt
|
|||
win/vs8cache.txt
|
||||
zlib/*.ds?
|
||||
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
|
||||
${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
|
||||
STRING(REPLACE "/GX" "" 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_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID,
|
||||
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;
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'A':
|
||||
opt_rehash= 0;
|
||||
|
|
|
@ -287,15 +287,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
#endif
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (error)
|
||||
{
|
||||
usage();
|
||||
|
|
|
@ -944,14 +944,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
remote_opt= 1;
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
case OPT_START_DATETIME:
|
||||
start_datetime= convert_str_to_timestamp(start_datetime_str);
|
||||
break;
|
||||
|
@ -1167,7 +1162,7 @@ could be out of memory");
|
|||
}
|
||||
if (len < 8 && net->read_pos[0] == 254)
|
||||
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]));
|
||||
if (!(ev= Log_event::read_log_event((const char*) net->read_pos + 1 ,
|
||||
len - 1, &error_msg,
|
||||
|
@ -1222,6 +1217,18 @@ could be out of memory");
|
|||
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)))
|
||||
{
|
||||
error= ((error < 0) ? 0 : 1);
|
||||
|
@ -1234,16 +1241,16 @@ could be out of memory");
|
|||
const char *old_fname= le->fname;
|
||||
uint old_len= le->fname_len;
|
||||
File file;
|
||||
|
||||
|
||||
if ((file= load_processor.prepare_new_file_for_old_format(le,fname)) < 0)
|
||||
{
|
||||
error= 1;
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
||||
if ((error= process_event(print_event_info, ev, old_off)))
|
||||
{
|
||||
my_close(file,MYF(MY_WME));
|
||||
my_close(file,MYF(MY_WME));
|
||||
error= ((error < 0) ? 0 : 1);
|
||||
goto err;
|
||||
}
|
||||
|
@ -1256,8 +1263,8 @@ could be out of memory");
|
|||
}
|
||||
}
|
||||
/*
|
||||
Let's adjust offset for remote log as for local log to produce
|
||||
similar text.
|
||||
Let's adjust offset for remote log as for local log to produce
|
||||
similar text and to have --stop-position to work identically.
|
||||
*/
|
||||
old_off+= len-1;
|
||||
}
|
||||
|
|
|
@ -315,15 +315,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
break;
|
||||
case 'V': print_version(); exit(0);
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -109,7 +109,8 @@ static char *opt_password=0,*current_user=0,
|
|||
*lines_terminated=0, *enclosed=0, *opt_enclosed=0, *escaped=0,
|
||||
*where=0, *order_by=0,
|
||||
*opt_compatible_mode_str= 0,
|
||||
*err_ptr= 0;
|
||||
*err_ptr= 0,
|
||||
*log_error_file= NULL;
|
||||
static char **defaults_argv= 0;
|
||||
static char compatible_mode_normal_str[255];
|
||||
static ulong opt_compatible_mode= 0;
|
||||
|
@ -120,7 +121,9 @@ static my_string opt_mysql_unix_port=0;
|
|||
static int first_error=0;
|
||||
static DYNAMIC_STRING extended_row;
|
||||
#include <sslopt-vars.h>
|
||||
FILE *md_result_file= 0;
|
||||
FILE *md_result_file= 0;
|
||||
FILE *stderror_file=0;
|
||||
|
||||
#ifdef HAVE_SMEM
|
||||
static char *shared_memory_base_name=0;
|
||||
#endif
|
||||
|
@ -320,6 +323,9 @@ static struct my_option my_long_options[] =
|
|||
0, 0, 0, 0, 0, 0},
|
||||
{"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},
|
||||
{"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,
|
||||
"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"
|
||||
|
@ -801,14 +807,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
break;
|
||||
}
|
||||
case (int) OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -4210,6 +4211,16 @@ int main(int argc, char **argv)
|
|||
free_resources(0);
|
||||
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))
|
||||
{
|
||||
free_resources(0);
|
||||
|
@ -4273,5 +4284,9 @@ err:
|
|||
if (!path)
|
||||
write_footer(md_result_file);
|
||||
free_resources();
|
||||
|
||||
if (stderror_file)
|
||||
fclose(stderror_file);
|
||||
|
||||
return(first_error);
|
||||
} /* main */
|
||||
|
|
|
@ -231,14 +231,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
break;
|
||||
#endif
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||
break;
|
||||
|
|
|
@ -287,14 +287,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
#endif
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
}
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : "d:t:o");
|
||||
break;
|
||||
|
|
|
@ -689,14 +689,9 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
|||
#endif
|
||||
break;
|
||||
case OPT_MYSQL_PROTOCOL:
|
||||
{
|
||||
if ((opt_protocol= find_type(argument, &sql_protocol_typelib,0)) <= 0)
|
||||
{
|
||||
fprintf(stderr, "Unknown option to protocol: %s\n", argument);
|
||||
exit(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||
opt->name);
|
||||
break;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
break;
|
||||
|
|
|
@ -2498,17 +2498,20 @@ wait_for_position:
|
|||
if (!(res= mysql_store_result(mysql)))
|
||||
die("mysql_store_result() returned NULL for '%s'", query_buf);
|
||||
if (!(row= mysql_fetch_row(res)))
|
||||
{
|
||||
mysql_free_result(res);
|
||||
die("empty result in %s", query_buf);
|
||||
}
|
||||
if (!row[0])
|
||||
{
|
||||
/*
|
||||
It may be that the slave SQL thread has not started yet, though START
|
||||
SLAVE has been issued ?
|
||||
*/
|
||||
mysql_free_result(res);
|
||||
if (tries++ == 30)
|
||||
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 */
|
||||
mysql_free_result(res);
|
||||
goto wait_for_position;
|
||||
}
|
||||
mysql_free_result(res);
|
||||
|
@ -2549,6 +2552,7 @@ int do_save_master_pos()
|
|||
MYSQL *mysql = &cur_con->mysql;
|
||||
const char *query;
|
||||
int rpl_parse;
|
||||
DBUG_ENTER("do_save_master_pos");
|
||||
|
||||
rpl_parse = mysql_rpl_parse_enabled(mysql);
|
||||
mysql_disable_rpl_parse(mysql);
|
||||
|
@ -2706,7 +2710,7 @@ int do_save_master_pos()
|
|||
if (rpl_parse)
|
||||
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)
|
||||
{
|
||||
DBUG_ENTER("select_connection2");
|
||||
DBUG_ENTER("select_connection_name");
|
||||
DBUG_PRINT("enter",("name: '%s'", name));
|
||||
|
||||
if (!(cur_con= find_connection_by_name(name)))
|
||||
|
@ -3184,7 +3188,7 @@ int select_connection(struct st_command *command)
|
|||
if (*p)
|
||||
*p++= 0;
|
||||
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(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], [
|
||||
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.
|
||||
ZLIB_DEPS="-lz"
|
||||
zlib_dir="zlib"
|
||||
|
@ -10,16 +10,25 @@ AC_SUBST([zlib_dir])
|
|||
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], [
|
||||
save_CPPFLAGS="$CPPFLAGS"
|
||||
save_LIBS="$LIBS"
|
||||
CPPFLAGS="$ZLIB_INCLUDES $CPPFLAGS"
|
||||
LIBS="$LIBS $ZLIB_LIBS"
|
||||
if test X"$with_server" = Xno
|
||||
then
|
||||
zlibsym=zlibVersion
|
||||
else
|
||||
zlibsym=zlibCompileFlags
|
||||
fi
|
||||
AC_CACHE_VAL([mysql_cv_compress],
|
||||
[AC_TRY_LINK([#include <zlib.h>],
|
||||
[return zlibCompileFlags();],
|
||||
[return $zlibsym();],
|
||||
[mysql_cv_compress="yes"
|
||||
AC_MSG_RESULT([ok])],
|
||||
[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
|
||||
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"`
|
||||
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
|
||||
MYSQL_TCP_PORT_DEFAULT=3306
|
||||
|
|
|
@ -95,6 +95,7 @@ extern const char *client_errors[]; /* Error messages */
|
|||
#define CR_NO_RESULT_SET 2053
|
||||
#define CR_NOT_IMPLEMENTED 2054
|
||||
#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. */
|
||||
|
||||
|
|
|
@ -51,8 +51,6 @@ typedef long my_time_t;
|
|||
|
||||
/* two-digit years < this are 20..; >= this are 19.. */
|
||||
#define YY_PART_YEAR 70
|
||||
/* apply above magic to years < this */
|
||||
#define YY_MAGIC_BELOW 200
|
||||
|
||||
/* Flags to str_to_datetime */
|
||||
#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);
|
||||
uint calc_days_in_year(uint year);
|
||||
uint year_2000_handling(uint year);
|
||||
|
||||
void init_time(void);
|
||||
|
||||
|
|
|
@ -26,8 +26,9 @@ typedef struct st_typelib { /* Different types saved here */
|
|||
unsigned int *type_lengths;
|
||||
} TYPELIB;
|
||||
|
||||
extern int find_type(char *x, const TYPELIB *typelib,
|
||||
unsigned int full_name);
|
||||
extern int find_type_or_exit(const char *x, TYPELIB *typelib,
|
||||
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 const char *get_type(TYPELIB *typelib,unsigned int nr);
|
||||
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,
|
||||
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 *
|
||||
cli_mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||
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",
|
||||
"This feature is not implemented yet",
|
||||
"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",
|
||||
"This feature is not implemented yet",
|
||||
"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",
|
||||
"This feature is not implemented yet",
|
||||
"Lost connection to MySQL server at '%s', system error: %d",
|
||||
"Statement closed indirectly because of a preceeding %s() call",
|
||||
""
|
||||
};
|
||||
#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
|
||||
to change user successful or not.
|
||||
*/
|
||||
mysql_detach_stmt_list(&mysql->stmts);
|
||||
mysql_detach_stmt_list(&mysql->stmts, "mysql_change_user");
|
||||
if (rc == 0)
|
||||
{
|
||||
/* Free old connect information */
|
||||
|
@ -2872,7 +2872,7 @@ int STDCALL mysql_stmt_execute(MYSQL_STMT *stmt)
|
|||
|
||||
if (!mysql)
|
||||
{
|
||||
set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate);
|
||||
/* Error is already set in mysql_detatch_stmt_list */
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
# Requires statement logging
|
||||
-- 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;
|
||||
stop slave;
|
||||
connection master;
|
||||
|
|
|
@ -10,6 +10,10 @@
|
|||
|
||||
-- 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;
|
||||
stop slave;
|
||||
connection master;
|
||||
|
|
|
@ -5,6 +5,11 @@ source ./include/master-slave.inc;
|
|||
|
||||
# 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;
|
||||
#--replicate-ignore-db=federated
|
||||
stop slave;
|
||||
|
|
|
@ -2,10 +2,8 @@ connection master;
|
|||
--disable_warnings
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
--enable_warnings
|
||||
|
||||
connection slave;
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
--enable_warnings
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-- require r/not_embedded.require
|
||||
disable_query_log;
|
||||
select version() like N'%embedded%' as 'have_embedded';
|
||||
select version() like '%embedded%' as 'have_embedded';
|
||||
enable_query_log;
|
||||
|
||||
|
|
|
@ -534,7 +534,7 @@ sub collect_one_test_case($$$$$$$) {
|
|||
! ( $tinfo->{'binlog_format'} eq $::used_binlog_format ) )
|
||||
{
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'comment'}= "Not running with binlog format '$tinfo->{'binlog_format'}'";
|
||||
$tinfo->{'comment'}= "Requiring binlog format '$tinfo->{'binlog_format'}'";
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -599,7 +599,7 @@ our @tags=
|
|||
(
|
||||
["include/have_innodb.inc", "innodb_test", 1],
|
||||
["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/big_test.inc", "big_test", 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
|
||||
|
||||
|
@ -3293,6 +3293,12 @@ sub run_testcase_mark_logs($)
|
|||
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
|
||||
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
|
||||
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();
|
||||
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.
|
||||
# ----------------------------------------------------------------------
|
||||
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.")
|
||||
}
|
||||
|
|
|
@ -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 (null);
|
||||
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
|
||||
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 1 # use `test`; insert delayed into t1 values (207)
|
||||
master-bin.000001 # Intvar 1 # INSERT_ID=208
|
||||
master-bin.000001 # Query 1 # 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`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
|
||||
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (207)
|
||||
master-bin.000001 # Intvar # # INSERT_ID=208
|
||||
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (null)
|
||||
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),(400),(null);
|
||||
11 == 11
|
||||
|
|
|
@ -91,6 +91,8 @@ create table t1 (date char(30), format char(30) not null);
|
|||
insert into t1 values
|
||||
('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.%#'),
|
||||
('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 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'),
|
||||
|
@ -122,6 +124,8 @@ select date,format,str_to_date(date, format) as str_to_date from t1;
|
|||
date format str_to_date
|
||||
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
|
||||
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 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
|
||||
|
@ -153,6 +157,8 @@ select date,format,concat('',str_to_date(date, format)) as con from t1;
|
|||
date format con
|
||||
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
|
||||
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 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
|
||||
|
@ -184,6 +190,8 @@ select date,format,cast(str_to_date(date, format) as datetime) as datetime from
|
|||
date format datetime
|
||||
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
|
||||
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 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
|
||||
|
@ -215,6 +223,8 @@ select date,format,DATE(str_to_date(date, format)) as date2 from t1;
|
|||
date format date2
|
||||
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
|
||||
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 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
|
||||
|
@ -246,6 +256,8 @@ select date,format,TIME(str_to_date(date, format)) as time from t1;
|
|||
date format time
|
||||
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
|
||||
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 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
|
||||
|
@ -277,6 +289,8 @@ select date,format,concat(TIME(str_to_date(date, format))) as time2 from t1;
|
|||
date format time2
|
||||
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
|
||||
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 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
|
||||
|
@ -402,14 +416,14 @@ select date,format,str_to_date(date, format) as str_to_date from t1;
|
|||
date format str_to_date
|
||||
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
|
||||
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:
|
||||
Warning 1292 Incorrect datetime value: '10:20:10AM'
|
||||
select date,format,concat(str_to_date(date, format),'') as con from t1;
|
||||
date format con
|
||||
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
|
||||
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:
|
||||
Warning 1292 Incorrect datetime value: '10:20:10AM'
|
||||
drop table t1;
|
||||
|
|
|
@ -668,3 +668,17 @@ NULL
|
|||
3
|
||||
4
|
||||
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");
|
||||
weekofyear("1997-11-30 23:59:59.000001")
|
||||
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);
|
||||
makedate(1997,1)
|
||||
1997-01-01
|
||||
|
|
|
@ -1225,13 +1225,13 @@ TIME_FORMAT(SEC_TO_TIME(a),"%H:%i:%s")
|
|||
End of 5.0 tests
|
||||
select 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);
|
||||
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);
|
||||
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);
|
||||
date_sub("0200-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||
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
|
||||
select 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);
|
||||
date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||
NULL
|
||||
0168-12-31 23:59:59
|
||||
End of 5.1 tests
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
SET GLOBAL log_bin_trust_function_creators = 1;
|
||||
drop table if exists t1;
|
||||
drop database if exists mysqltest;
|
||||
SET NAMES binary;
|
||||
|
@ -1059,6 +1060,128 @@ DROP DATABASE bug23556;
|
|||
DROP USER bug23556@localhost;
|
||||
GRANT PROCESS ON * TO user@localhost;
|
||||
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
|
||||
set names utf8;
|
||||
grant select on test.* to юзер_юзер@localhost;
|
||||
|
|
|
@ -117,16 +117,82 @@ use testdb_1;
|
|||
create table t1 (f1 char(4));
|
||||
create view v1 as select f1 from t1;
|
||||
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 view v3 as select f1,f2 from t3;
|
||||
grant insert(f1), insert(f2) on v3 to testdb_2@localhost;
|
||||
create view v2 as select f1 from testdb_1.v1;
|
||||
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 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;
|
||||
ERROR HY000: EXPLAIN/SHOW can not be issued; lacking privileges for underlying table
|
||||
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;
|
||||
Field Type Null Key Default Extra
|
||||
f1 char(4) YES NULL
|
||||
|
@ -151,7 +217,8 @@ where a.table_name = 'testdb_1.v1';
|
|||
view_definition
|
||||
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
|
||||
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 user testdb_1@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
|
||||
Unknown option to protocol: NullS
|
||||
Alternatives are: 'TCP','SOCKET','PIPE','MEMORY'
|
||||
|
|
|
@ -122,6 +122,23 @@ DELIMITER ;
|
|||
ROLLBACK /* added by mysqlbinlog */;
|
||||
/*!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 --
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
|
@ -482,6 +499,23 @@ DELIMITER ;
|
|||
ROLLBACK /* added by mysqlbinlog */;
|
||||
/*!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 --
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=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');
|
||||
delete from t1 where a = 0;
|
||||
commit;
|
||||
delete from t1;
|
||||
begin;
|
||||
insert into t1 values (1, 'x');
|
||||
select * from t1;
|
||||
a b
|
||||
1 x
|
||||
rollback;
|
||||
set autocommit = 1;
|
||||
drop table t1;
|
||||
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_c,t2_c,t3_c,t4_c,t5_c,t6_c,t7_c,t8_c,t9_c,t10_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 '',
|
||||
`maturegarbagefa` varchar(32) NOT NULL default '',
|
||||
PRIMARY KEY (`capgoaledatta`,`goaledatta`,`maturegarbagefa`)
|
||||
) 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` (
|
||||
`capgotod` smallint(5) unsigned NOT NULL auto_increment,
|
||||
`gotod` smallint(5) unsigned NOT NULL default '0',
|
||||
|
@ -16,9 +16,9 @@ CREATE TABLE `t2_c` (
|
|||
`descrpooppo` varchar(64) default NULL,
|
||||
`svcutonsa` varchar(64) NOT NULL default '',
|
||||
PRIMARY KEY (`capgotod`),
|
||||
KEY `i_quadaddsvr` (`gotod`)
|
||||
KEY `i quadaddsvr` (`gotod`)
|
||||
) 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` (
|
||||
`CapGoaledatta` 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 `i_quadentity` (`fa`,`realm`)
|
||||
) 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` (
|
||||
`capfa` bigint(20) 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);
|
||||
CREATE TABLE `t7_c` (
|
||||
`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 '',
|
||||
`FastCode` char(6) 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);
|
||||
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 (10000),(2000),(3000);
|
||||
create table t1 engine=myisam as select * from t1_c;
|
||||
create table t2 engine=myisam as select * from t2_c;
|
||||
create table t3 engine=myisam as select * from t3_c;
|
||||
|
@ -240,6 +241,24 @@ a
|
|||
1
|
||||
2
|
||||
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
|
||||
PARTITION BY LINEAR KEY (`dardtestard`);
|
||||
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
|
||||
-- insert into date/time columns --
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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 'c17' at row 1
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c13' 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 'c17' at row 1
|
||||
|
|
|
@ -2944,20 +2944,26 @@ delete from t9 ;
|
|||
test_sequence
|
||||
-- insert into date/time columns --
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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 'c17' at row 1
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c13' 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 'c17' at row 1
|
||||
|
|
|
@ -2945,20 +2945,26 @@ delete from t9 ;
|
|||
test_sequence
|
||||
-- insert into date/time columns --
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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 'c17' at row 1
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c13' 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 'c17' at row 1
|
||||
|
|
|
@ -2881,20 +2881,26 @@ delete from t9 ;
|
|||
test_sequence
|
||||
-- insert into date/time columns --
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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 'c17' at row 1
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c13' 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 'c17' at row 1
|
||||
|
@ -5895,20 +5902,26 @@ delete from t9 ;
|
|||
test_sequence
|
||||
-- insert into date/time columns --
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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 'c17' at row 1
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c13' 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 'c17' at row 1
|
||||
|
|
|
@ -2944,20 +2944,26 @@ delete from t9 ;
|
|||
test_sequence
|
||||
-- insert into date/time columns --
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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
|
||||
Warnings:
|
||||
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:
|
||||
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 'c17' at row 1
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'c13' 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 'c17' at row 1
|
||||
|
|
|
@ -175,6 +175,24 @@ ROW(2,10) <=> ROW(3,4)
|
|||
SELECT ROW(NULL,10) <=> ROW(3,NULL);
|
||||
ROW(NULL,10) <=> ROW(3,NULL)
|
||||
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` ;
|
||||
1 0 0 0 null
|
||||
1 0 0 0 NULL
|
||||
|
|
|
@ -27,7 +27,7 @@ change master to master_log_pos=178;
|
|||
start slave;
|
||||
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
|
||||
# 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;
|
||||
File Position Binlog_Do_DB Binlog_Ignore_DB
|
||||
master-bin.000001 106 <Binlog_Ignore_DB>
|
||||
|
|
|
@ -24,6 +24,33 @@ nid nom prenom
|
|||
select * from t1 order by nid;
|
||||
nid nom prenom
|
||||
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;
|
||||
CREATE TABLE `t1` ( `nid` int(11) NOT NULL default '0',
|
||||
`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
|
||||
265
|
||||
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
|
||||
|
|
|
@ -8,22 +8,29 @@ create procedure db1_secret.dummy() begin end;
|
|||
drop procedure db1_secret.dummy;
|
||||
use db1_secret;
|
||||
create table t1 ( u varchar(64), i int );
|
||||
insert into t1 values('test', 0);
|
||||
create procedure stamp(i int)
|
||||
insert into db1_secret.t1 values (user(), i);
|
||||
show procedure status like 'stamp';
|
||||
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
|
||||
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';
|
||||
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
|
||||
call stamp(1);
|
||||
select * from t1;
|
||||
u i
|
||||
test 0
|
||||
root@localhost 1
|
||||
select db();
|
||||
db()
|
||||
db1_secret
|
||||
test
|
||||
grant execute on procedure db1_secret.stamp to user1@'%';
|
||||
grant execute on function db1_secret.db to user1@'%';
|
||||
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);
|
||||
select db1_secret.db();
|
||||
db1_secret.db()
|
||||
db1_secret
|
||||
test
|
||||
select * from db1_secret.t1;
|
||||
ERROR 42000: SELECT command denied to user 'user1'@'localhost' for table 't1'
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
ERROR 42000: Access denied for user 'user1'@'localhost' to database 'db1_secret'
|
||||
drop procedure db1_secret.dummy;
|
||||
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);
|
||||
select db1_secret.db();
|
||||
db1_secret.db()
|
||||
db1_secret
|
||||
test
|
||||
select * from db1_secret.t1;
|
||||
ERROR 42000: SELECT command denied to user ''@'localhost' for table 't1'
|
||||
create procedure db1_secret.dummy() begin end;
|
||||
ERROR 42000: Access denied for user ''@'%' to database 'db1_secret'
|
||||
drop procedure db1_secret.dummy;
|
||||
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;
|
||||
u i
|
||||
test 0
|
||||
root@localhost 1
|
||||
user1@localhost 2
|
||||
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);
|
||||
select * from t1;
|
||||
u i
|
||||
test 0
|
||||
root@localhost 1
|
||||
user1@localhost 2
|
||||
anon@localhost 3
|
||||
root@localhost 4
|
||||
select db();
|
||||
db()
|
||||
db1_secret
|
||||
test
|
||||
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();
|
||||
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);
|
||||
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();
|
||||
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;
|
||||
create database db2;
|
||||
use db2;
|
||||
|
|
|
@ -6061,6 +6061,21 @@ SUM(f2) bug25373(f1)
|
|||
21.300000071526 NULL
|
||||
DROP FUNCTION bug25373|
|
||||
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 table if exists examplebug20777|
|
||||
create function bug20777(f1 bigint unsigned) returns bigint unsigned
|
||||
|
@ -6147,3 +6162,28 @@ bug20777(18446744073709551613)+1
|
|||
drop function bug20777;
|
||||
End of 5.0 tests.
|
||||
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 (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'));
|
||||
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'));
|
||||
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'));
|
||||
|
@ -1386,4 +1388,9 @@ ERROR 01000: Data truncated for column 'a' at row 1
|
|||
insert into t1 values ('2E3x');
|
||||
ERROR 01000: Data truncated for column 'a' at row 1
|
||||
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
|
||||
|
|
|
@ -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
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
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 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;
|
||||
|
@ -330,7 +330,7 @@ patient_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
|
||||
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:
|
||||
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`))
|
||||
|
@ -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);
|
||||
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
|
||||
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:
|
||||
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))))
|
||||
|
@ -3924,6 +3924,71 @@ c a (SELECT GROUP_CONCAT(COUNT(a)+1) FROM t2 WHERE m = a)
|
|||
3 3 4
|
||||
1 4 2,2
|
||||
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);
|
||||
INSERT INTO t1 VALUES (2,22),(1,11),(2,22);
|
||||
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;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
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;
|
||||
oref a Z
|
||||
ee NULL NULL
|
||||
|
@ -457,7 +457,7 @@ group by grp having min(ie) > 1) Z
|
|||
from t2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
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,
|
||||
a in (select min(ie) from t1 where oref=t2.oref
|
||||
group by grp having min(ie) > 1) Z
|
||||
|
|
|
@ -53,3 +53,30 @@ a
|
|||
3
|
||||
4
|
||||
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
|
||||
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));
|
||||
CAST(CAST('10:11:12.098700' AS TIME) AS DECIMAL(20,6))
|
||||
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
|
||||
Warnings:
|
||||
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;
|
||||
create definer = current_user() sql security invoker view v1 as select 1;
|
||||
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;
|
||||
drop view mysqltest.v3;
|
||||
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;
|
||||
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;
|
||||
|
@ -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`
|
||||
DROP USER u26813@localhost;
|
||||
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.
|
||||
DROP VIEW IF EXISTS v1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
. 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:
|
||||
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: #
|
||||
# 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 ($val3);
|
||||
|
||||
eval insert into t4 values (1,$val1);
|
||||
eval insert into t4 values (2,$val2);
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
eval load data infile '$MYSQL_TEST_DIR/suite/partitions/include/$infile' into table t4;
|
||||
|
||||
eval insert into t5 values (1,$val1);
|
||||
eval insert into t5 values (2,$val2);
|
||||
eval insert into t5 values (3,$val3);
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
eval load data infile '$MYSQL_TEST_DIR/suite/partitions/include/$infile' into table t5;
|
||||
|
||||
eval insert into t6 values (1,$val2);
|
||||
eval insert into t6 values (2,$val3);
|
||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||
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 t2;
|
||||
select * from t3;
|
||||
select * from t4;
|
||||
select * from t5;
|
||||
select * from t6;
|
||||
select * from t1 order by col1;
|
||||
select * from t2 order by col1;
|
||||
select * from t3 order by col1;
|
||||
select * from t4 order by colint;
|
||||
select * from t5 order by colint;
|
||||
select * from t6 order by colint;
|
||||
|
||||
if ($do_long_tests)
|
||||
{
|
||||
|
@ -111,12 +110,12 @@ if ($do_long_tests)
|
|||
eval update t5 set col1=$val4 where col1=$val1;
|
||||
eval update t6 set col1=$val4 where col1=$val1;
|
||||
|
||||
select * from t1;
|
||||
select * from t2;
|
||||
select * from t3;
|
||||
select * from t4;
|
||||
select * from t5;
|
||||
select * from t6;
|
||||
select * from t1 order by col1;
|
||||
select * from t2 order by col1;
|
||||
select * from t3 order by col1;
|
||||
select * from t4 order by colint;
|
||||
select * from t5 order by colint;
|
||||
select * from t6 order by colint;
|
||||
}
|
||||
|
||||
--echo -------------------------------------------------------------------------
|
||||
|
@ -175,46 +174,63 @@ partition by range(colint)
|
|||
(partition p0 values less than ($valsqlfunc),
|
||||
partition p1 values less than maxvalue);
|
||||
|
||||
select * from t11;
|
||||
select * from t22;
|
||||
select * from t33;
|
||||
select * from t44;
|
||||
select * from t55;
|
||||
select * from t66;
|
||||
select * from t11 order by col1;
|
||||
select * from t22 order by col1;
|
||||
select * from t33 order by col1;
|
||||
select * from t44 order by colint;
|
||||
select * from t55 order by colint;
|
||||
select * from t66 order by colint;
|
||||
|
||||
if ($do_long_tests)
|
||||
{
|
||||
--echo ---------------------------
|
||||
--echo ---- some alter table begin
|
||||
--echo ---------------------------
|
||||
eval alter table t11
|
||||
reorganize partition p0,p1 into
|
||||
(partition s1 values less than maxvalue);
|
||||
select * from t11;
|
||||
select * from t11 order by col1;
|
||||
|
||||
eval alter table t11
|
||||
reorganize partition s1 into
|
||||
(partition p0 values less than (15),
|
||||
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
|
||||
reorganize partition p0,p1 into
|
||||
(partition s1 values less than maxvalue);
|
||||
select * from t66;
|
||||
select * from t66 order by colint;
|
||||
|
||||
eval alter table t66
|
||||
reorganize partition s1 into
|
||||
(partition p0 values less than ($valsqlfunc),
|
||||
partition p1 values less than maxvalue);
|
||||
select * from t66;
|
||||
select * from t66 order by colint;
|
||||
|
||||
eval alter table t66
|
||||
reorganize partition p0,p1 into
|
||||
(partition s1 values less than maxvalue);
|
||||
select * from t66;
|
||||
select * from t66 order by colint;
|
||||
|
||||
eval alter table t66
|
||||
add partition s0
|
||||
(partition p0 values less than ($valsqlfunc);
|
||||
select * fromt t66;
|
||||
eval alter table t66
|
||||
reorganize partition s1 into
|
||||
(partition p0 values less than ($valsqlfunc),
|
||||
partition p1 values less than maxvalue);
|
||||
select * from t66 order by colint;
|
||||
|
||||
let $t1=t1;
|
||||
let $t2=t2;
|
||||
|
@ -233,6 +249,9 @@ if ($do_long_tests)
|
|||
let $t6=t66;
|
||||
--source suite/partitions/include/partition_supported_sql_funcs_delete.inc
|
||||
# --source include/partition_supported_sql_funcs_delete.inc
|
||||
--echo -------------------------
|
||||
--echo ---- some alter table end
|
||||
--echo -------------------------
|
||||
}
|
||||
--disable_warnings
|
||||
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 --- Delete rows and partitions of tables with $sqlfunc
|
||||
--echo -------------------------------------------------------------------------
|
||||
|
@ -9,25 +22,25 @@ eval delete from $t4 where col1=$val2;
|
|||
eval delete from $t5 where col1=$val2;
|
||||
eval delete from $t6 where col1=$val2;
|
||||
|
||||
eval select * from $t1;
|
||||
eval select * from $t2;
|
||||
eval select * from $t3;
|
||||
eval select * from $t4;
|
||||
eval select * from $t5;
|
||||
eval select * from $t1 order by col1;
|
||||
eval select * from $t2 order by col1;
|
||||
eval select * from $t3 order by col1;
|
||||
eval select * from $t4 order by colint;
|
||||
eval select * from $t5 order by colint;
|
||||
|
||||
eval insert into $t1 values ($val2);
|
||||
eval insert into $t2 values ($val2);
|
||||
eval insert into $t3 values ($val2);
|
||||
eval insert into $t4 values (4,$val2);
|
||||
eval insert into $t5 values (4,$val2);
|
||||
eval insert into $t6 values (4,$val2);
|
||||
eval insert into $t4 values (60,$val2);
|
||||
eval insert into $t5 values (60,$val2);
|
||||
eval insert into $t6 values (60,$val2);
|
||||
|
||||
eval select * from $t1;
|
||||
eval select * from $t2;
|
||||
eval select * from $t3;
|
||||
eval select * from $t4;
|
||||
eval select * from $t5;
|
||||
eval select * from $t6;
|
||||
eval select * from $t1 order by col1;
|
||||
eval select * from $t2 order by col1;
|
||||
eval select * from $t3 order by col1;
|
||||
eval select * from $t4 order by colint;
|
||||
eval select * from $t5 order by colint;
|
||||
eval select * from $t6 order by colint;
|
||||
|
||||
eval alter table $t1 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 $t6 drop partition p0;
|
||||
|
||||
eval select * from $t1;
|
||||
eval select * from $t2;
|
||||
eval select * from $t3;
|
||||
eval select * from $t4;
|
||||
eval select * from $t5;
|
||||
eval select * from $t6;
|
||||
eval select * from $t1 order by col1;
|
||||
eval select * from $t2 order by col1;
|
||||
eval select * from $t3 order by col1;
|
||||
eval select * from $t4 order by colint;
|
||||
eval select * from $t5 order by colint;
|
||||
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 #
|
||||
# #
|
||||
# Purpose: #
|
||||
# Tests around sql functions #
|
||||
# Tests which SQL functions are allowed in partinioning clauses. #
|
||||
# #
|
||||
# #
|
||||
#------------------------------------------------------------------------------#
|
||||
|
@ -11,12 +11,28 @@
|
|||
# Change Author: #
|
||||
# Change Date: #
|
||||
# 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 $valsqlfunc = abs(15);
|
||||
let $coltype = int;
|
||||
let $infile = partition_supported_sql_funcs_int_int.in;
|
||||
let $val1 = 5 ;
|
||||
let $val2 = 13 ;
|
||||
let $val3 = 17 ;
|
||||
|
@ -27,6 +43,7 @@ let $val4 = 15 ;
|
|||
let $sqlfunc = ascii(col1);
|
||||
let $valsqlfunc = ascii('5');
|
||||
let $coltype = char(1);
|
||||
let $infile = partition_supported_sql_funcs_int_ch1.in;
|
||||
let $val1 = '1';
|
||||
let $val2 = '9';
|
||||
let $val3 = '3';
|
||||
|
@ -37,6 +54,7 @@ let $val4 = '8';
|
|||
let $sqlfunc = cast(ceiling(col1) as signed integer);
|
||||
let $valsqlfunc = cast(ceiling(15) as signed integer);
|
||||
let $coltype = float(7,4);
|
||||
let $infile = partition_supported_sql_funcs_int_float.in;
|
||||
let $val1 = 5.1230;
|
||||
let $val2 = 13.345;
|
||||
let $val3 = 17.987;
|
||||
|
@ -47,6 +65,7 @@ let $val4 = 15.654 ;
|
|||
let $sqlfunc = cast(floor(col1) as signed);
|
||||
let $valsqlfunc = cast(floor(15.123) as signed);
|
||||
let $coltype = float(7,4);
|
||||
let $infile = partition_supported_sql_funcs_int_float.in;
|
||||
let $val1 = 5.1230;
|
||||
let $val2 = 13.345;
|
||||
let $val3 = 17.987;
|
||||
|
@ -57,6 +76,7 @@ let $val4 = 15.654 ;
|
|||
let $sqlfunc = cast(mod(col1,10) as signed);
|
||||
let $valsqlfunc = cast(mod(15,10) as signed);
|
||||
let $coltype = float(7,4);
|
||||
let $infile = partition_supported_sql_funcs_int_float.in;
|
||||
let $val1 = 5.0000;
|
||||
let $val2 = 19;
|
||||
let $val3 = 17;
|
||||
|
@ -67,6 +87,7 @@ let $val4 = 15 ;
|
|||
let $sqlfunc = ord(col1);
|
||||
let $valsqlfunc = ord('a');
|
||||
let $coltype = char(3);
|
||||
let $infile = partition_supported_sql_funcs_int_ch1.in;
|
||||
let $val1 = '1';
|
||||
let $val2 = '9';
|
||||
let $val3 = '3';
|
||||
|
@ -77,6 +98,7 @@ let $val4 = '8';
|
|||
let $sqlfunc = day(col1);
|
||||
let $valsqlfunc = day('2006-12-21');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-02-03';
|
||||
let $val2 = '2006-01-17';
|
||||
let $val3 = '2006-01-25';
|
||||
|
@ -87,6 +109,7 @@ let $val4 = '2006-02-05';
|
|||
let $sqlfunc = dayofmonth(col1);
|
||||
let $valsqlfunc = dayofmonth('2006-12-24');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-02-03';
|
||||
let $val2 = '2006-01-17';
|
||||
let $val3 = '2006-01-25';
|
||||
|
@ -97,6 +120,7 @@ let $val4 = '2006-02-05';
|
|||
let $sqlfunc = dayofweek(col1);
|
||||
let $valsqlfunc = dayofweek('2006-12-24');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-01-03';
|
||||
let $val2 = '2006-02-17';
|
||||
let $val3 = '2006-01-25';
|
||||
|
@ -107,6 +131,7 @@ let $val4 = '2006-02-05';
|
|||
let $sqlfunc = dayofyear(col1);
|
||||
let $valsqlfunc = dayofyear('2006-12-25');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-01-03';
|
||||
let $val2 = '2006-01-17';
|
||||
let $val3 = '2006-02-25';
|
||||
|
@ -120,6 +145,7 @@ let $coltype = char(30);
|
|||
let $sqlfunc = extract(month from col1);
|
||||
let $valsqlfunc = extract(year from '1998-11-23');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-01-03';
|
||||
let $val2 = '2006-02-17';
|
||||
let $val3 = '2006-01-25';
|
||||
|
@ -130,6 +156,7 @@ let $val4 = '2006-02-05';
|
|||
let $sqlfunc = hour(col1);
|
||||
let $valsqlfunc = hour('18:30');
|
||||
let $coltype = time;
|
||||
let $infile = partition_supported_sql_funcs_int_time.in;
|
||||
let $val1 = '09:09';
|
||||
let $val2 = '14:30';
|
||||
let $val3 = '21:59';
|
||||
|
@ -140,6 +167,7 @@ let $val4 = '10:30';
|
|||
let $sqlfunc = microsecond(col1);
|
||||
let $valsqlfunc = microsecond('10:30:10.000010');
|
||||
let $coltype = time;
|
||||
let $infile = partition_supported_sql_funcs_int_time.in;
|
||||
let $val1 = '09:09:15.000002';
|
||||
let $val2 = '04:30:01.000018';
|
||||
let $val3 = '00:59:22.000024';
|
||||
|
@ -160,6 +188,7 @@ let $val4 = '10:24:23';
|
|||
let $sqlfunc = second(col1);
|
||||
let $valsqlfunc = second('18:30:14');
|
||||
let $coltype = time;
|
||||
let $infile = partition_supported_sql_funcs_int_time.in;
|
||||
let $val1 = '09:09:09';
|
||||
let $val2 = '14:30:20';
|
||||
let $val3 = '21:59:22';
|
||||
|
@ -173,6 +202,7 @@ let $coltype = char(30);
|
|||
let $sqlfunc = month(col1);
|
||||
let $valsqlfunc = month('2006-10-14');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-01-03';
|
||||
let $val2 = '2006-12-17';
|
||||
let $val3 = '2006-05-25';
|
||||
|
@ -183,6 +213,7 @@ let $val4 = '2006-11-06';
|
|||
let $sqlfunc = quarter(col1);
|
||||
let $valsqlfunc = quarter('2006-10-14');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-01-03';
|
||||
let $val2 = '2006-12-17';
|
||||
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 $valsqlfunc = time_to_sec('18:30:14')-(time_to_sec('17:59:59'));
|
||||
let $coltype = time;
|
||||
let $infile = partition_supported_sql_funcs_int_time.in;
|
||||
let $val1 = '09:09:15';
|
||||
let $val2 = '14:30:45';
|
||||
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 $valsqlfunc = to_days('2006-02-02')-to_days('2006-01-01');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-02-03';
|
||||
let $val2 = '2006-01-17';
|
||||
let $val3 = '2006-01-25';
|
||||
|
@ -213,6 +246,7 @@ let $val4 = '2006-02-06';
|
|||
let $sqlfunc = weekday(col1);
|
||||
let $valsqlfunc = weekday('2006-10-14');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-12-03';
|
||||
let $val2 = '2006-11-17';
|
||||
let $val3 = '2006-05-25';
|
||||
|
@ -223,6 +257,7 @@ let $val4 = '2006-02-06';
|
|||
let $sqlfunc = weekofyear(col1);
|
||||
let $valsqlfunc = weekofyear('2006-02-14');
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-01-03';
|
||||
let $val2 = '2006-03-17';
|
||||
let $val3 = '2006-05-25';
|
||||
|
@ -233,6 +268,7 @@ let $val4 = '2006-09-06';
|
|||
let $sqlfunc = year(col1)-1990;
|
||||
let $valsqlfunc = year('2005-10-14')-1990;
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '1996-01-03';
|
||||
let $val2 = '2000-02-17';
|
||||
let $val3 = '2004-05-25';
|
||||
|
@ -243,6 +279,7 @@ let $val4 = '2002-02-15';
|
|||
let $sqlfunc = yearweek(col1)-200600;
|
||||
let $valsqlfunc = yearweek('2006-10-14')-200600;
|
||||
let $coltype = date;
|
||||
let $infile = partition_supported_sql_funcs_int_date.in;
|
||||
let $val1 = '2006-01-03';
|
||||
let $val2 = '2006-08-17';
|
||||
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_sessions : needs system_3_init.inc
|
||||
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 #
|
||||
# #
|
||||
# Purpose: #
|
||||
# Tests around sql functions #
|
||||
# INNODB branch #
|
||||
# Tests which SQL functions are allowed in partinioning clauses with #
|
||||
# INNODB. #
|
||||
# #
|
||||
#------------------------------------------------------------------------------#
|
||||
# Original Author: HH #
|
||||
|
@ -18,16 +18,12 @@
|
|||
# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
|
||||
# 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
|
||||
|
||||
##### Options, for debugging support #####
|
||||
let $debug= 0;
|
||||
let $do_long_tests= 0;
|
||||
let $do_long_tests= 1;
|
||||
|
||||
# The server must support partitioning.
|
||||
--source include/have_partition.inc
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
# t/partition_supported_sql_funcs_myisam.test #
|
||||
# #
|
||||
# Purpose: #
|
||||
# Tests around sql functions #
|
||||
# MyISAM branch #
|
||||
# Tests which SQL functions are allowed in partinioning clauses with #
|
||||
# MYISAM. #
|
||||
# #
|
||||
#------------------------------------------------------------------------------#
|
||||
# Original Author: HH #
|
||||
|
@ -27,7 +27,7 @@
|
|||
|
||||
##### Options, for debugging support #####
|
||||
let $debug= 0;
|
||||
let $do_long_tests= 0;
|
||||
let $do_long_tests= 1;
|
||||
|
||||
# The server must support partitioning.
|
||||
--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…
Add table
Reference in a new issue