mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-5.1-new
into linux.site:/home/reggie/work/mysql-5.1-rbr_cleanups
This commit is contained in:
@ -663,7 +663,8 @@ end:
|
|||||||
|
|
||||||
static struct my_option my_long_options[] =
|
static struct my_option my_long_options[] =
|
||||||
{
|
{
|
||||||
|
{"help", '?', "Display this help and exit.",
|
||||||
|
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#ifdef __NETWARE__
|
#ifdef __NETWARE__
|
||||||
{"autoclose", OPT_AUTO_CLOSE, "Auto close the screen on exit for Netware.",
|
{"autoclose", OPT_AUTO_CLOSE, "Auto close the screen on exit for Netware.",
|
||||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
@ -683,13 +684,13 @@ static struct my_option my_long_options[] =
|
|||||||
{"character-sets-dir", OPT_CHARSETS_DIR,
|
{"character-sets-dir", OPT_CHARSETS_DIR,
|
||||||
"Directory where character sets are.", (gptr*) &charsets_dir,
|
"Directory where character sets are.", (gptr*) &charsets_dir,
|
||||||
(gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
(gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"database", 'd', "List entries for just this database (local log only).",
|
||||||
|
(gptr*) &database, (gptr*) &database, 0, GET_STR_ALLOC, REQUIRED_ARG,
|
||||||
|
0, 0, 0, 0, 0, 0},
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
{"debug", '#', "Output debug log.", (gptr*) &default_dbug_option,
|
{"debug", '#', "Output debug log.", (gptr*) &default_dbug_option,
|
||||||
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
#endif
|
#endif
|
||||||
{"database", 'd', "List entries for just this database (local log only).",
|
|
||||||
(gptr*) &database, (gptr*) &database, 0, GET_STR_ALLOC, REQUIRED_ARG,
|
|
||||||
0, 0, 0, 0, 0, 0},
|
|
||||||
{"disable-log-bin", 'D', "Disable binary log. This is useful, if you "
|
{"disable-log-bin", 'D', "Disable binary log. This is useful, if you "
|
||||||
"enabled --to-last-log and are sending the output to the same MySQL server. "
|
"enabled --to-last-log and are sending the output to the same MySQL server. "
|
||||||
"This way you could avoid an endless loop. You would also like to use it "
|
"This way you could avoid an endless loop. You would also like to use it "
|
||||||
@ -700,13 +701,14 @@ static struct my_option my_long_options[] =
|
|||||||
{"force-read", 'f', "Force reading unknown binlog events.",
|
{"force-read", 'f', "Force reading unknown binlog events.",
|
||||||
(gptr*) &force_opt, (gptr*) &force_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
(gptr*) &force_opt, (gptr*) &force_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
||||||
0, 0},
|
0, 0},
|
||||||
{"help", '?', "Display this help and exit.",
|
|
||||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
|
||||||
{"hexdump", 'H', "Augment output with hexadecimal and ASCII event dump.",
|
{"hexdump", 'H', "Augment output with hexadecimal and ASCII event dump.",
|
||||||
(gptr*) &opt_hexdump, (gptr*) &opt_hexdump, 0, GET_BOOL, NO_ARG,
|
(gptr*) &opt_hexdump, (gptr*) &opt_hexdump, 0, GET_BOOL, NO_ARG,
|
||||||
0, 0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0, 0},
|
||||||
{"host", 'h', "Get the binlog from server.", (gptr*) &host, (gptr*) &host,
|
{"host", 'h', "Get the binlog from server.", (gptr*) &host, (gptr*) &host,
|
||||||
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"local-load", 'l', "Prepare local temporary files for LOAD DATA INFILE in the specified directory.",
|
||||||
|
(gptr*) &dirname_for_local_load, (gptr*) &dirname_for_local_load, 0,
|
||||||
|
GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"offset", 'o', "Skip the first N entries.", (gptr*) &offset, (gptr*) &offset,
|
{"offset", 'o', "Skip the first N entries.", (gptr*) &offset, (gptr*) &offset,
|
||||||
0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"password", 'p', "Password to connect to remote server.",
|
{"password", 'p', "Password to connect to remote server.",
|
||||||
@ -722,15 +724,15 @@ static struct my_option my_long_options[] =
|
|||||||
{"protocol", OPT_MYSQL_PROTOCOL,
|
{"protocol", OPT_MYSQL_PROTOCOL,
|
||||||
"The protocol of connection (tcp,socket,pipe,memory).",
|
"The protocol of connection (tcp,socket,pipe,memory).",
|
||||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR,
|
|
||||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
|
||||||
{"read-from-remote-server", 'R', "Read binary logs from a MySQL server",
|
{"read-from-remote-server", 'R', "Read binary logs from a MySQL server",
|
||||||
(gptr*) &remote_opt, (gptr*) &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
(gptr*) &remote_opt, (gptr*) &remote_opt, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
||||||
0, 0},
|
0, 0},
|
||||||
{"open_files_limit", OPT_OPEN_FILES_LIMIT,
|
{"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR,
|
||||||
"Used to reserve file descriptors for usage by this program",
|
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
(gptr*) &open_files_limit, (gptr*) &open_files_limit, 0, GET_ULONG,
|
{"server-id", OPT_SERVER_ID,
|
||||||
REQUIRED_ARG, MY_NFILE, 8, OS_FILE_LIMIT, 0, 1, 0},
|
"Extract only binlog entries created by the server having the given id.",
|
||||||
|
(gptr*) &server_id, (gptr*) &server_id, 0, GET_ULONG,
|
||||||
|
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"short-form", 's', "Just show the queries, no extra info.",
|
{"short-form", 's', "Just show the queries, no extra info.",
|
||||||
(gptr*) &short_form, (gptr*) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
(gptr*) &short_form, (gptr*) &short_form, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
|
||||||
0, 0},
|
0, 0},
|
||||||
@ -745,6 +747,13 @@ static struct my_option my_long_options[] =
|
|||||||
"(you should probably use quotes for your shell to set it properly).",
|
"(you should probably use quotes for your shell to set it properly).",
|
||||||
(gptr*) &start_datetime_str, (gptr*) &start_datetime_str,
|
(gptr*) &start_datetime_str, (gptr*) &start_datetime_str,
|
||||||
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"start-position", OPT_START_POSITION,
|
||||||
|
"Start reading the binlog at position N. Applies to the first binlog "
|
||||||
|
"passed on the command line.",
|
||||||
|
(gptr*) &start_position, (gptr*) &start_position, 0, GET_ULL,
|
||||||
|
REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE,
|
||||||
|
/* COM_BINLOG_DUMP accepts only 4 bytes for the position */
|
||||||
|
(ulonglong)(~(uint32)0), 0, 0, 0},
|
||||||
{"stop-datetime", OPT_STOP_DATETIME,
|
{"stop-datetime", OPT_STOP_DATETIME,
|
||||||
"Stop reading the binlog at first event having a datetime equal or "
|
"Stop reading the binlog at first event having a datetime equal or "
|
||||||
"posterior to the argument; the argument must be a date and time "
|
"posterior to the argument; the argument must be a date and time "
|
||||||
@ -753,24 +762,12 @@ static struct my_option my_long_options[] =
|
|||||||
"(you should probably use quotes for your shell to set it properly).",
|
"(you should probably use quotes for your shell to set it properly).",
|
||||||
(gptr*) &stop_datetime_str, (gptr*) &stop_datetime_str,
|
(gptr*) &stop_datetime_str, (gptr*) &stop_datetime_str,
|
||||||
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"start-position", OPT_START_POSITION,
|
|
||||||
"Start reading the binlog at position N. Applies to the first binlog "
|
|
||||||
"passed on the command line.",
|
|
||||||
(gptr*) &start_position, (gptr*) &start_position, 0, GET_ULL,
|
|
||||||
REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE,
|
|
||||||
/* COM_BINLOG_DUMP accepts only 4 bytes for the position */
|
|
||||||
(ulonglong)(~(uint32)0), 0, 0, 0},
|
|
||||||
{"stop-position", OPT_STOP_POSITION,
|
{"stop-position", OPT_STOP_POSITION,
|
||||||
"Stop reading the binlog at position N. Applies to the last binlog "
|
"Stop reading the binlog at position N. Applies to the last binlog "
|
||||||
"passed on the command line.",
|
"passed on the command line.",
|
||||||
(gptr*) &stop_position, (gptr*) &stop_position, 0, GET_ULL,
|
(gptr*) &stop_position, (gptr*) &stop_position, 0, GET_ULL,
|
||||||
REQUIRED_ARG, (ulonglong)(~(my_off_t)0), BIN_LOG_HEADER_SIZE,
|
REQUIRED_ARG, (ulonglong)(~(my_off_t)0), BIN_LOG_HEADER_SIZE,
|
||||||
(ulonglong)(~(my_off_t)0), 0, 0, 0},
|
(ulonglong)(~(my_off_t)0), 0, 0, 0},
|
||||||
{"server-id", OPT_SERVER_ID,
|
|
||||||
"Only extract binlog entries created by a certain server id "
|
|
||||||
"passed on the command line.",
|
|
||||||
(gptr*) &server_id, (gptr*) &server_id, 0, GET_ULONG,
|
|
||||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
|
||||||
{"to-last-log", 't', "Requires -R. Will not stop at the end of the \
|
{"to-last-log", 't', "Requires -R. Will not stop at the end of the \
|
||||||
requested binlog but rather continue printing until the end of the last \
|
requested binlog but rather continue printing until the end of the last \
|
||||||
binlog of the MySQL server. If you send the output to the same MySQL server, \
|
binlog of the MySQL server. If you send the output to the same MySQL server, \
|
||||||
@ -780,11 +777,12 @@ that may lead to an endless loop.",
|
|||||||
{"user", 'u', "Connect to the remote server as username.",
|
{"user", 'u', "Connect to the remote server as username.",
|
||||||
(gptr*) &user, (gptr*) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0,
|
(gptr*) &user, (gptr*) &user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0,
|
||||||
0, 0},
|
0, 0},
|
||||||
{"local-load", 'l', "Prepare local temporary files for LOAD DATA INFILE in the specified directory.",
|
|
||||||
(gptr*) &dirname_for_local_load, (gptr*) &dirname_for_local_load, 0,
|
|
||||||
GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
|
||||||
{"version", 'V', "Print version and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
|
{"version", 'V', "Print version and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
|
||||||
0, 0, 0, 0, 0},
|
0, 0, 0, 0, 0},
|
||||||
|
{"open_files_limit", OPT_OPEN_FILES_LIMIT,
|
||||||
|
"Used to reserve file descriptors for usage by this program",
|
||||||
|
(gptr*) &open_files_limit, (gptr*) &open_files_limit, 0, GET_ULONG,
|
||||||
|
REQUIRED_ARG, MY_NFILE, 8, OS_FILE_LIMIT, 0, 1, 0},
|
||||||
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -30,7 +30,9 @@ AC_DEFUN([MYSQL_CHECK_YASSL], [
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
AC_SUBST([yassl_taocrypt_extra_cxxflags])
|
AC_SUBST([yassl_taocrypt_extra_cxxflags])
|
||||||
|
# Link extra/yassl/include/openssl subdir to include/
|
||||||
|
yassl_h_ln_cmd="\$(LN) -s \$(top_srcdir)/extra/yassl/include/openssl openssl"
|
||||||
|
AC_SUBST(yassl_h_ln_cmd)
|
||||||
else
|
else
|
||||||
yassl_dir=""
|
yassl_dir=""
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
|
@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
|
|||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
# The Docs Makefile.am parses this line!
|
# The Docs Makefile.am parses this line!
|
||||||
# remember to also change ndb version below and update version.c in ndb
|
# remember to also change ndb version below and update version.c in ndb
|
||||||
AM_INIT_AUTOMAKE(mysql, 5.1.5-alpha)
|
AM_INIT_AUTOMAKE(mysql, 5.1.6-alpha)
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
|
|
||||||
PROTOCOL_VERSION=10
|
PROTOCOL_VERSION=10
|
||||||
@ -15,12 +15,6 @@ DOT_FRM_VERSION=6
|
|||||||
# See the libtool docs for information on how to do shared lib versions.
|
# See the libtool docs for information on how to do shared lib versions.
|
||||||
SHARED_LIB_VERSION=15:0:0
|
SHARED_LIB_VERSION=15:0:0
|
||||||
|
|
||||||
# ndb version
|
|
||||||
NDB_VERSION_MAJOR=5
|
|
||||||
NDB_VERSION_MINOR=0
|
|
||||||
NDB_VERSION_BUILD=19
|
|
||||||
NDB_VERSION_STATUS=""
|
|
||||||
|
|
||||||
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
||||||
# Remember that regexps needs to quote [ and ] since this is run through m4
|
# Remember that regexps needs to quote [ and ] since this is run through m4
|
||||||
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"`
|
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"`
|
||||||
|
@ -34,7 +34,7 @@ noinst_HEADERS = config-win.h config-os2.h config-netware.h \
|
|||||||
my_vle.h
|
my_vle.h
|
||||||
|
|
||||||
# mysql_version.h are generated
|
# mysql_version.h are generated
|
||||||
CLEANFILES = mysql_version.h my_config.h readline
|
CLEANFILES = mysql_version.h my_config.h readline openssl
|
||||||
|
|
||||||
# Some include files that may be moved and patched by configure
|
# Some include files that may be moved and patched by configure
|
||||||
DISTCLEANFILES = sched.h $(CLEANFILES)
|
DISTCLEANFILES = sched.h $(CLEANFILES)
|
||||||
@ -42,6 +42,7 @@ DISTCLEANFILES = sched.h $(CLEANFILES)
|
|||||||
link_sources:
|
link_sources:
|
||||||
-$(RM) -fr readline
|
-$(RM) -fr readline
|
||||||
@readline_h_ln_cmd@
|
@readline_h_ln_cmd@
|
||||||
|
@yassl_h_ln_cmd@
|
||||||
|
|
||||||
my_config.h: ../config.h
|
my_config.h: ../config.h
|
||||||
$(CP) ../config.h my_config.h
|
$(CP) ../config.h my_config.h
|
||||||
|
@ -22,6 +22,11 @@ functions */
|
|||||||
#define _WIN32_WINNT 0x0500
|
#define _WIN32_WINNT 0x0500
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && _MSC_VER >= 1400
|
||||||
|
/* Avoid endless warnings about sprintf() etc. being unsafe. */
|
||||||
|
#define _CRT_SECURE_NO_DEPRECATE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <sys/locking.h>
|
#include <sys/locking.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <math.h> /* Because of rint() */
|
#include <math.h> /* Because of rint() */
|
||||||
@ -341,6 +346,11 @@ inline double ulonglong2double(ulonglong value)
|
|||||||
#define HAVE_SETFILEPOINTER
|
#define HAVE_SETFILEPOINTER
|
||||||
#define HAVE_VIO_READ_BUFF
|
#define HAVE_VIO_READ_BUFF
|
||||||
|
|
||||||
|
#if defined(_WIN64) && defined(_M_X64)
|
||||||
|
/* Avoid type conflicts with built-in functions. */
|
||||||
|
#define HAVE_STRNLEN
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __NT__
|
#ifndef __NT__
|
||||||
#undef FILE_SHARE_DELETE
|
#undef FILE_SHARE_DELETE
|
||||||
#define FILE_SHARE_DELETE 0 /* Not implemented on Win 98/ME */
|
#define FILE_SHARE_DELETE 0 /* Not implemented on Win 98/ME */
|
||||||
|
@ -33,7 +33,7 @@ typedef void (*hash_free_key)(void *);
|
|||||||
|
|
||||||
typedef struct st_hash {
|
typedef struct st_hash {
|
||||||
uint key_offset,key_length; /* Length of key if const length */
|
uint key_offset,key_length; /* Length of key if const length */
|
||||||
uint records,blength,current_record;
|
uint records, blength;
|
||||||
uint flags;
|
uint flags;
|
||||||
DYNAMIC_ARRAY array; /* Place for hash_keys */
|
DYNAMIC_ARRAY array; /* Place for hash_keys */
|
||||||
hash_get_key get_key;
|
hash_get_key get_key;
|
||||||
@ -41,6 +41,9 @@ typedef struct st_hash {
|
|||||||
CHARSET_INFO *charset;
|
CHARSET_INFO *charset;
|
||||||
} HASH;
|
} HASH;
|
||||||
|
|
||||||
|
/* A search iterator state */
|
||||||
|
typedef uint HASH_SEARCH_STATE;
|
||||||
|
|
||||||
#define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,B,C,D,E,F,G, H CALLER_INFO)
|
#define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,B,C,D,E,F,G, H CALLER_INFO)
|
||||||
my_bool _hash_init(HASH *hash, CHARSET_INFO *charset,
|
my_bool _hash_init(HASH *hash, CHARSET_INFO *charset,
|
||||||
uint default_array_elements, uint key_offset,
|
uint default_array_elements, uint key_offset,
|
||||||
@ -49,12 +52,15 @@ my_bool _hash_init(HASH *hash, CHARSET_INFO *charset,
|
|||||||
void hash_free(HASH *tree);
|
void hash_free(HASH *tree);
|
||||||
void my_hash_reset(HASH *hash);
|
void my_hash_reset(HASH *hash);
|
||||||
byte *hash_element(HASH *hash,uint idx);
|
byte *hash_element(HASH *hash,uint idx);
|
||||||
gptr hash_search(HASH *info,const byte *key,uint length);
|
gptr hash_search(const HASH *info, const byte *key, uint length);
|
||||||
gptr hash_next(HASH *info,const byte *key,uint length);
|
gptr hash_first(const HASH *info, const byte *key, uint length,
|
||||||
|
HASH_SEARCH_STATE *state);
|
||||||
|
gptr hash_next(const HASH *info, const byte *key, uint length,
|
||||||
|
HASH_SEARCH_STATE *state);
|
||||||
my_bool my_hash_insert(HASH *info,const byte *data);
|
my_bool my_hash_insert(HASH *info,const byte *data);
|
||||||
my_bool hash_delete(HASH *hash,byte *record);
|
my_bool hash_delete(HASH *hash,byte *record);
|
||||||
my_bool hash_update(HASH *hash,byte *record,byte *old_key,uint old_key_length);
|
my_bool hash_update(HASH *hash,byte *record,byte *old_key,uint old_key_length);
|
||||||
void hash_replace(HASH *hash, uint idx, byte *new_row);
|
void hash_replace(HASH *hash, HASH_SEARCH_STATE *state, byte *new_row);
|
||||||
my_bool hash_check(HASH *hash); /* Only in debug library */
|
my_bool hash_check(HASH *hash); /* Only in debug library */
|
||||||
|
|
||||||
#define hash_clear(H) bzero((char*) (H),sizeof(*(H)))
|
#define hash_clear(H) bzero((char*) (H),sizeof(*(H)))
|
||||||
|
@ -961,6 +961,7 @@ typedef off_t os_off_t;
|
|||||||
#define SOCKET_EAGAIN WSAEINPROGRESS
|
#define SOCKET_EAGAIN WSAEINPROGRESS
|
||||||
#define SOCKET_ETIMEDOUT WSAETIMEDOUT
|
#define SOCKET_ETIMEDOUT WSAETIMEDOUT
|
||||||
#define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK
|
#define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK
|
||||||
|
#define SOCKET_EADDRINUSE WSAEADDRINUSE
|
||||||
#define SOCKET_ENFILE ENFILE
|
#define SOCKET_ENFILE ENFILE
|
||||||
#define SOCKET_EMFILE EMFILE
|
#define SOCKET_EMFILE EMFILE
|
||||||
#elif defined(OS2)
|
#elif defined(OS2)
|
||||||
@ -969,6 +970,7 @@ typedef off_t os_off_t;
|
|||||||
#define SOCKET_EAGAIN SOCEINPROGRESS
|
#define SOCKET_EAGAIN SOCEINPROGRESS
|
||||||
#define SOCKET_ETIMEDOUT SOCKET_EINTR
|
#define SOCKET_ETIMEDOUT SOCKET_EINTR
|
||||||
#define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK
|
#define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK
|
||||||
|
#define SOCKET_EADDRINUSE SOCEADDRINUSE
|
||||||
#define SOCKET_ENFILE SOCENFILE
|
#define SOCKET_ENFILE SOCENFILE
|
||||||
#define SOCKET_EMFILE SOCEMFILE
|
#define SOCKET_EMFILE SOCEMFILE
|
||||||
#define closesocket(A) soclose(A)
|
#define closesocket(A) soclose(A)
|
||||||
@ -979,6 +981,7 @@ typedef off_t os_off_t;
|
|||||||
#define SOCKET_EAGAIN EAGAIN
|
#define SOCKET_EAGAIN EAGAIN
|
||||||
#define SOCKET_ETIMEDOUT SOCKET_EINTR
|
#define SOCKET_ETIMEDOUT SOCKET_EINTR
|
||||||
#define SOCKET_EWOULDBLOCK EWOULDBLOCK
|
#define SOCKET_EWOULDBLOCK EWOULDBLOCK
|
||||||
|
#define SOCKET_EADDRINUSE EADDRINUSE
|
||||||
#define SOCKET_ENFILE ENFILE
|
#define SOCKET_ENFILE ENFILE
|
||||||
#define SOCKET_EMFILE EMFILE
|
#define SOCKET_EMFILE EMFILE
|
||||||
#endif
|
#endif
|
||||||
|
@ -755,8 +755,9 @@ extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint array_index);
|
|||||||
extern void freeze_size(DYNAMIC_ARRAY *array);
|
extern void freeze_size(DYNAMIC_ARRAY *array);
|
||||||
#define dynamic_array_ptr(array,array_index) ((array)->buffer+(array_index)*(array)->size_of_element)
|
#define dynamic_array_ptr(array,array_index) ((array)->buffer+(array_index)*(array)->size_of_element)
|
||||||
#define dynamic_element(array,array_index,type) ((type)((array)->buffer) +(array_index))
|
#define dynamic_element(array,array_index,type) ((type)((array)->buffer) +(array_index))
|
||||||
#define push_dynamic(A,B) insert_dynamic(A,B)
|
#define push_dynamic(A,B) insert_dynamic((A),(B))
|
||||||
#define reset_dynamic(array) ((array)->elements= 0)
|
#define reset_dynamic(array) ((array)->elements= 0)
|
||||||
|
#define sort_dynamic(A,cmp) qsort((A)->buffer, (A)->elements, (A)->size_of_element, (cmp))
|
||||||
|
|
||||||
extern my_bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str,
|
extern my_bool init_dynamic_string(DYNAMIC_STRING *str, const char *init_str,
|
||||||
uint init_alloc,uint alloc_increment);
|
uint init_alloc,uint alloc_increment);
|
||||||
|
@ -39,8 +39,28 @@
|
|||||||
|
|
||||||
#define mysql_declare_plugin \
|
#define mysql_declare_plugin \
|
||||||
int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
int _mysql_plugin_interface_version_= MYSQL_PLUGIN_INTERFACE_VERSION; \
|
||||||
|
int _mysql_sizeof_struct_st_plugin_= sizeof(struct st_mysql_plugin); \
|
||||||
struct st_mysql_plugin _mysql_plugin_declarations_[]= {
|
struct st_mysql_plugin _mysql_plugin_declarations_[]= {
|
||||||
#define mysql_declare_plugin_end ,{0,0,0,0,0,0,0}}
|
#define mysql_declare_plugin_end ,{0,0,0,0,0,0,0,0}}
|
||||||
|
|
||||||
|
/*
|
||||||
|
declarations for SHOW STATUS support in plugins
|
||||||
|
*/
|
||||||
|
enum enum_mysql_show_type
|
||||||
|
{
|
||||||
|
SHOW_UNDEF, SHOW_BOOL, SHOW_MY_BOOL, SHOW_INT, SHOW_LONG,
|
||||||
|
SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
|
||||||
|
SHOW_ARRAY, SHOW_FUNC
|
||||||
|
};
|
||||||
|
|
||||||
|
struct st_mysql_show_var {
|
||||||
|
const char *name;
|
||||||
|
char *value;
|
||||||
|
enum enum_mysql_show_type type;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define SHOW_VAR_FUNC_BUFF_SIZE 1024
|
||||||
|
typedef int (*mysql_show_var_func)(void *, struct st_mysql_show_var*, char *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Plugin description structure.
|
Plugin description structure.
|
||||||
@ -56,6 +76,7 @@ struct st_mysql_plugin
|
|||||||
int (*init)(void); /* the function to invoke when plugin is loaded */
|
int (*init)(void); /* the function to invoke when plugin is loaded */
|
||||||
int (*deinit)(void); /* the function to invoke when plugin is unloaded */
|
int (*deinit)(void); /* the function to invoke when plugin is unloaded */
|
||||||
uint version; /* plugin version (for SHOW PLUGINS) */
|
uint version; /* plugin version (for SHOW PLUGINS) */
|
||||||
|
struct st_mysql_show_var *status_vars;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
target = libmysqlclient_r.la
|
target = libmysqlclient_r.la
|
||||||
target_defs = -DDONT_USE_RAID -DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@
|
target_defs = -DDONT_USE_RAID -DMYSQL_CLIENT @LIB_EXTRA_CCFLAGS@
|
||||||
LIBS = @LIBS@ @ZLIB_LIBS@ @openssl_libs@ @yassl_libs@
|
LIBS = @LIBS@ @ZLIB_LIBS@ @openssl_libs@
|
||||||
|
|
||||||
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
|
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
|
||||||
$(openssl_includes) $(yassl_includes) @ZLIB_INCLUDES@
|
$(openssl_includes) $(yassl_includes) @ZLIB_INCLUDES@
|
||||||
@ -32,7 +32,7 @@ include $(top_srcdir)/libmysql/Makefile.shared
|
|||||||
libmysql_dir = $(top_srcdir)/libmysql
|
libmysql_dir = $(top_srcdir)/libmysql
|
||||||
|
|
||||||
libmysqlclient_r_la_SOURCES = $(target_sources)
|
libmysqlclient_r_la_SOURCES = $(target_sources)
|
||||||
libmysqlclient_r_la_LIBADD = $(target_libadd)
|
libmysqlclient_r_la_LIBADD = $(target_libadd) $(yassl_libs_with_path)
|
||||||
libmysqlclient_r_la_LDFLAGS = $(target_ldflags)
|
libmysqlclient_r_la_LDFLAGS = $(target_ldflags)
|
||||||
|
|
||||||
# This is called from the toplevel makefile
|
# This is called from the toplevel makefile
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
# See if the master logs LOAD DATA INFILE correctly when binlog_*_db rules
|
|
||||||
# exist.
|
|
||||||
# This is for BUG#1100 (LOAD DATA INFILE was half-logged).
|
|
||||||
|
|
||||||
|
|
||||||
-- source include/master-slave.inc
|
|
||||||
|
|
||||||
--disable_warnings
|
|
||||||
drop database if exists mysqltest;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
connection slave;
|
|
||||||
stop slave; # don't need slave for this test
|
|
||||||
|
|
||||||
# Test logging on master
|
|
||||||
|
|
||||||
connection master;
|
|
||||||
# 'test' is the current database
|
|
||||||
create database mysqltest;
|
|
||||||
use mysqltest;
|
|
||||||
create table t1(a int, b int, unique(b));
|
|
||||||
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
|
||||||
# Starting from 5.0.3 LOAD DATA is replicated much in the same way as ordinary
|
|
||||||
# query so "show binlog ..." should show two events (before 5.0.3 no events
|
|
||||||
# were returned).
|
|
||||||
--replace_column 2 # 5 #
|
|
||||||
show binlog events from 102;
|
|
||||||
drop database mysqltest;
|
|
179
mysql-test/extra/rpl_tests/rpl_row_blob.test
Normal file
179
mysql-test/extra/rpl_tests/rpl_row_blob.test
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
#################################################
|
||||||
|
# Author: JBM
|
||||||
|
# Date: 2006-01-06
|
||||||
|
# Purpose: Test test that BLOBs are replicated
|
||||||
|
# correctly.
|
||||||
|
################################################
|
||||||
|
|
||||||
|
# Includes
|
||||||
|
-- source include/have_binlog_format_row.inc
|
||||||
|
-- source include/master-slave.inc
|
||||||
|
|
||||||
|
# Pre test clean up section
|
||||||
|
connection master;
|
||||||
|
--disable_warnings
|
||||||
|
DROP TABLE IF EXISTS test.t1;
|
||||||
|
DROP TABLE IF EXISTS test.t2;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
# Start test section
|
||||||
|
--echo ***** Table Create Section ****
|
||||||
|
--echo
|
||||||
|
--disable_warnings
|
||||||
|
--replace_result $engine_type engine_type
|
||||||
|
CREATE TABLE test.t1 (c1 int not null auto_increment,
|
||||||
|
data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type;
|
||||||
|
--enable_warnings
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Data Insert Section test.t1 *****
|
||||||
|
--echo
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, NULL);
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024));
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024));
|
||||||
|
CHECK TABLE test.t1;
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Data Insert Validation Master Section test.t1 ****
|
||||||
|
--echo
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
--echo
|
||||||
|
--echo **** Data Insert Validation Slave Section test.t1 ****
|
||||||
|
--echo
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
|
||||||
|
connection master;
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Data Update Section test.t1 ****
|
||||||
|
--echo
|
||||||
|
UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1;
|
||||||
|
UPDATE t1 set data=repeat('c',17*1024) where c1 = 2;
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Data Update Validation Master Section test.t1 ****
|
||||||
|
--echo
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
--echo
|
||||||
|
--echo **** Data Update Validation Slave Section test.t1 ****
|
||||||
|
--echo
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
connection master;
|
||||||
|
--echo
|
||||||
|
--echo **** End Test Section test.t1 ****
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Create Table test.t2 ****
|
||||||
|
--echo
|
||||||
|
--disable_warnings
|
||||||
|
--replace_result $engine_type engine_type
|
||||||
|
CREATE TABLE test.t2 (
|
||||||
|
c1 INT NOT NULL PRIMARY KEY,
|
||||||
|
c2 TEXT,
|
||||||
|
c3 INT,
|
||||||
|
c4 LONGBLOB,
|
||||||
|
KEY(c3))ENGINE=$engine_type;
|
||||||
|
--enable_warnings
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo *** Setup Values For test.t2 ***
|
||||||
|
# x0 size 256 (current inline size)
|
||||||
|
set @x0 = '01234567012345670123456701234567';
|
||||||
|
set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0);
|
||||||
|
|
||||||
|
# b1 length 2000+256 (blob part aligned)
|
||||||
|
set @b1 = 'b1';
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@x0);
|
||||||
|
# d1 length 3000
|
||||||
|
set @d1 = 'dd1';
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
|
||||||
|
# b2 length 20000
|
||||||
|
set @b2 = 'b2';
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
|
||||||
|
# d2 length 30000
|
||||||
|
set @d2 = 'dd2';
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Data Insert Section test.t2 *****
|
||||||
|
--echo
|
||||||
|
INSERT INTO test.t2 VALUES(1,@b1,111,@d1);
|
||||||
|
INSERT INTO test.t2 VALUES(2,@b2,222,@d2);
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Data Insert Validation Master Section test.t2 ****
|
||||||
|
--echo
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
--echo
|
||||||
|
--echo **** Data Insert Validation Slave Section test.t2 ****
|
||||||
|
--echo
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
connection master;
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Data Update Section test.t2 ****
|
||||||
|
--echo
|
||||||
|
UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1;
|
||||||
|
UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2;
|
||||||
|
--echo
|
||||||
|
|
||||||
|
--echo **** Data Update Validation Master Section test.t2 ****
|
||||||
|
--echo
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
--echo
|
||||||
|
--echo **** Data Update Validation Slave Section test.t2 ****
|
||||||
|
--echo
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
connection master;
|
||||||
|
--echo
|
||||||
|
|
||||||
|
# Post test clean up section
|
||||||
|
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > ./var/tmp/rpl_row_blob_master.sql
|
||||||
|
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > ./var/tmp/rpl_row_blob_slave.sql
|
||||||
|
|
||||||
|
--exec diff ./var/tmp/rpl_row_blob_master.sql ./var/tmp/rpl_row_blob_slave.sql
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS test.t1;
|
||||||
|
DROP TABLE IF EXISTS test.t2;
|
@ -890,7 +890,14 @@ sub mtr_exit ($) {
|
|||||||
# cluck("Called mtr_exit()");
|
# cluck("Called mtr_exit()");
|
||||||
mtr_timer_stop_all($::glob_timers);
|
mtr_timer_stop_all($::glob_timers);
|
||||||
local $SIG{HUP} = 'IGNORE';
|
local $SIG{HUP} = 'IGNORE';
|
||||||
kill('HUP', -$$);
|
# ToDo: Signalling -$$ will only work if we are the process group
|
||||||
|
# leader (in fact on QNX it will signal our session group leader,
|
||||||
|
# which might be Do-compile or Pushbuild, causing tests to be
|
||||||
|
# aborted). So we only do it if we are the group leader. We might
|
||||||
|
# set ourselves as the group leader at startup (with
|
||||||
|
# POSIX::setpgrp(0,0)), but then care must be needed to always do
|
||||||
|
# proper child process cleanup.
|
||||||
|
kill('HUP', -$$) if $$ == getpgrp();
|
||||||
sleep 2;
|
sleep 2;
|
||||||
exit($code);
|
exit($code);
|
||||||
}
|
}
|
||||||
|
@ -805,6 +805,12 @@ sub command_line_setup () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# On QNX, /tmp/dir/master.sock and /tmp/dir//master.sock seem to be
|
||||||
|
# considered different, so avoid the extra slash (/) in the socket
|
||||||
|
# paths.
|
||||||
|
my $sockdir = $opt_tmpdir;
|
||||||
|
$sockdir =~ s|/+$||;
|
||||||
|
|
||||||
# Put this into a hash, will be a C struct
|
# Put this into a hash, will be a C struct
|
||||||
|
|
||||||
$master->[0]=
|
$master->[0]=
|
||||||
@ -813,7 +819,7 @@ sub command_line_setup () {
|
|||||||
path_myerr => "$opt_vardir/log/master.err",
|
path_myerr => "$opt_vardir/log/master.err",
|
||||||
path_mylog => "$opt_vardir/log/master.log",
|
path_mylog => "$opt_vardir/log/master.log",
|
||||||
path_mypid => "$opt_vardir/run/master.pid",
|
path_mypid => "$opt_vardir/run/master.pid",
|
||||||
path_mysock => "$opt_tmpdir/master.sock",
|
path_mysock => "$sockdir/master.sock",
|
||||||
path_myport => $opt_master_myport,
|
path_myport => $opt_master_myport,
|
||||||
start_timeout => 400, # enough time create innodb tables
|
start_timeout => 400, # enough time create innodb tables
|
||||||
|
|
||||||
@ -826,7 +832,7 @@ sub command_line_setup () {
|
|||||||
path_myerr => "$opt_vardir/log/master1.err",
|
path_myerr => "$opt_vardir/log/master1.err",
|
||||||
path_mylog => "$opt_vardir/log/master1.log",
|
path_mylog => "$opt_vardir/log/master1.log",
|
||||||
path_mypid => "$opt_vardir/run/master1.pid",
|
path_mypid => "$opt_vardir/run/master1.pid",
|
||||||
path_mysock => "$opt_tmpdir/master1.sock",
|
path_mysock => "$sockdir/master1.sock",
|
||||||
path_myport => $opt_master_myport + 1,
|
path_myport => $opt_master_myport + 1,
|
||||||
start_timeout => 400, # enough time create innodb tables
|
start_timeout => 400, # enough time create innodb tables
|
||||||
};
|
};
|
||||||
@ -837,7 +843,7 @@ sub command_line_setup () {
|
|||||||
path_myerr => "$opt_vardir/log/slave.err",
|
path_myerr => "$opt_vardir/log/slave.err",
|
||||||
path_mylog => "$opt_vardir/log/slave.log",
|
path_mylog => "$opt_vardir/log/slave.log",
|
||||||
path_mypid => "$opt_vardir/run/slave.pid",
|
path_mypid => "$opt_vardir/run/slave.pid",
|
||||||
path_mysock => "$opt_tmpdir/slave.sock",
|
path_mysock => "$sockdir/slave.sock",
|
||||||
path_myport => $opt_slave_myport,
|
path_myport => $opt_slave_myport,
|
||||||
start_timeout => 400,
|
start_timeout => 400,
|
||||||
};
|
};
|
||||||
@ -848,7 +854,7 @@ sub command_line_setup () {
|
|||||||
path_myerr => "$opt_vardir/log/slave1.err",
|
path_myerr => "$opt_vardir/log/slave1.err",
|
||||||
path_mylog => "$opt_vardir/log/slave1.log",
|
path_mylog => "$opt_vardir/log/slave1.log",
|
||||||
path_mypid => "$opt_vardir/run/slave1.pid",
|
path_mypid => "$opt_vardir/run/slave1.pid",
|
||||||
path_mysock => "$opt_tmpdir/slave1.sock",
|
path_mysock => "$sockdir/slave1.sock",
|
||||||
path_myport => $opt_slave_myport + 1,
|
path_myport => $opt_slave_myport + 1,
|
||||||
start_timeout => 300,
|
start_timeout => 300,
|
||||||
};
|
};
|
||||||
@ -859,7 +865,7 @@ sub command_line_setup () {
|
|||||||
path_myerr => "$opt_vardir/log/slave2.err",
|
path_myerr => "$opt_vardir/log/slave2.err",
|
||||||
path_mylog => "$opt_vardir/log/slave2.log",
|
path_mylog => "$opt_vardir/log/slave2.log",
|
||||||
path_mypid => "$opt_vardir/run/slave2.pid",
|
path_mypid => "$opt_vardir/run/slave2.pid",
|
||||||
path_mysock => "$opt_tmpdir/slave2.sock",
|
path_mysock => "$sockdir/slave2.sock",
|
||||||
path_myport => $opt_slave_myport + 2,
|
path_myport => $opt_slave_myport + 2,
|
||||||
start_timeout => 300,
|
start_timeout => 300,
|
||||||
};
|
};
|
||||||
@ -869,7 +875,7 @@ sub command_line_setup () {
|
|||||||
path_err => "$opt_vardir/log/im.err",
|
path_err => "$opt_vardir/log/im.err",
|
||||||
path_log => "$opt_vardir/log/im.log",
|
path_log => "$opt_vardir/log/im.log",
|
||||||
path_pid => "$opt_vardir/run/im.pid",
|
path_pid => "$opt_vardir/run/im.pid",
|
||||||
path_sock => "$opt_tmpdir/im.sock",
|
path_sock => "$sockdir/im.sock",
|
||||||
port => $im_port,
|
port => $im_port,
|
||||||
start_timeout => $master->[0]->{'start_timeout'},
|
start_timeout => $master->[0]->{'start_timeout'},
|
||||||
admin_login => 'im_admin',
|
admin_login => 'im_admin',
|
||||||
@ -884,7 +890,7 @@ sub command_line_setup () {
|
|||||||
server_id => 1,
|
server_id => 1,
|
||||||
port => $im_mysqld1_port,
|
port => $im_mysqld1_port,
|
||||||
path_datadir => "$opt_vardir/im_mysqld_1.data",
|
path_datadir => "$opt_vardir/im_mysqld_1.data",
|
||||||
path_sock => "$opt_tmpdir/mysqld_1.sock",
|
path_sock => "$sockdir/mysqld_1.sock",
|
||||||
path_pid => "$opt_vardir/run/mysqld_1.pid",
|
path_pid => "$opt_vardir/run/mysqld_1.pid",
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -893,7 +899,7 @@ sub command_line_setup () {
|
|||||||
server_id => 2,
|
server_id => 2,
|
||||||
port => $im_mysqld2_port,
|
port => $im_mysqld2_port,
|
||||||
path_datadir => "$opt_vardir/im_mysqld_2.data",
|
path_datadir => "$opt_vardir/im_mysqld_2.data",
|
||||||
path_sock => "$opt_tmpdir/mysqld_2.sock",
|
path_sock => "$sockdir/mysqld_2.sock",
|
||||||
path_pid => "$opt_vardir/run/mysqld_2.pid",
|
path_pid => "$opt_vardir/run/mysqld_2.pid",
|
||||||
nonguarded => 1,
|
nonguarded => 1,
|
||||||
};
|
};
|
||||||
|
@ -1957,4 +1957,9 @@ d varchar(255) character set utf8,
|
|||||||
e varchar(255) character set utf8,
|
e varchar(255) character set utf8,
|
||||||
key (a,b,c,d,e)) engine=bdb;
|
key (a,b,c,d,e)) engine=bdb;
|
||||||
ERROR 42000: Specified key was too long; max key length is 3072 bytes
|
ERROR 42000: Specified key was too long; max key length is 3072 bytes
|
||||||
|
set autocommit=0;
|
||||||
|
create table t1 (a int) engine=bdb;
|
||||||
|
commit;
|
||||||
|
alter table t1 add primary key(a);
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -262,21 +262,22 @@ master-bin.000001 209 Write_rows 1 #
|
|||||||
master-bin.000001 243 Table_map 1 # test.t1
|
master-bin.000001 243 Table_map 1 # test.t1
|
||||||
master-bin.000001 282 Write_rows 1 #
|
master-bin.000001 282 Write_rows 1 #
|
||||||
master-bin.000001 316 Xid 1 # COMMIT /* xid= */
|
master-bin.000001 316 Xid 1 # COMMIT /* xid= */
|
||||||
master-bin.000001 343 Table_map 1 # test.t1
|
master-bin.000001 343 Query 1 # use `test`; delete from t1
|
||||||
master-bin.000001 382 Delete_rows 1 #
|
master-bin.000001 420 Xid 1 # COMMIT /* xid= */
|
||||||
master-bin.000001 421 Xid 1 # COMMIT /* xid= */
|
master-bin.000001 447 Query 1 # use `test`; delete from t2
|
||||||
master-bin.000001 448 Query 1 # use `test`; alter table t2 type=MyISAM
|
master-bin.000001 524 Xid 1 # COMMIT /* xid= */
|
||||||
master-bin.000001 537 Table_map 1 # test.t1
|
master-bin.000001 551 Query 1 # use `test`; alter table t2 type=MyISAM
|
||||||
master-bin.000001 576 Write_rows 1 #
|
master-bin.000001 640 Table_map 1 # test.t1
|
||||||
master-bin.000001 610 Xid 1 # COMMIT /* xid= */
|
master-bin.000001 679 Write_rows 1 #
|
||||||
master-bin.000001 637 Table_map 1 # test.t2
|
master-bin.000001 713 Xid 1 # COMMIT /* xid= */
|
||||||
master-bin.000001 676 Write_rows 1 #
|
master-bin.000001 740 Table_map 1 # test.t2
|
||||||
master-bin.000001 710 Query 1 # use `test`; drop table t1,t2
|
master-bin.000001 779 Write_rows 1 #
|
||||||
master-bin.000001 789 Query 1 # use `test`; create table t0 (n int)
|
master-bin.000001 813 Query 1 # use `test`; drop table t1,t2
|
||||||
master-bin.000001 875 Table_map 1 # test.t0
|
master-bin.000001 892 Query 1 # use `test`; create table t0 (n int)
|
||||||
master-bin.000001 914 Write_rows 1 #
|
master-bin.000001 978 Table_map 1 # test.t0
|
||||||
master-bin.000001 948 Table_map 1 # test.t0
|
master-bin.000001 1017 Write_rows 1 #
|
||||||
master-bin.000001 987 Write_rows 1 #
|
master-bin.000001 1051 Table_map 1 # test.t0
|
||||||
master-bin.000001 1021 Query 1 # use `test`; create table t2 (n int) engine=innodb
|
master-bin.000001 1090 Write_rows 1 #
|
||||||
|
master-bin.000001 1124 Query 1 # use `test`; create table t2 (n int) engine=innodb
|
||||||
do release_lock("lock1");
|
do release_lock("lock1");
|
||||||
drop table t0,t2;
|
drop table t0,t2;
|
||||||
|
@ -121,6 +121,7 @@ master-bin.000001 # Query 1 # use `test`; replace into t1 values(100)
|
|||||||
master-bin.000001 # Query 1 # use `test`; COMMIT
|
master-bin.000001 # Query 1 # use `test`; COMMIT
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t2 (a varchar(200)) engine=blackhole
|
master-bin.000001 # Query 1 # use `test`; create table t2 (a varchar(200)) engine=blackhole
|
||||||
master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581
|
master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=581
|
||||||
|
master-bin.000001 # Query 1 # use `test`; COMMIT
|
||||||
master-bin.000001 # Execute_load_query 1 # use `test`; load data infile '../../std_data/words.dat' into table t2 ;file_id=1
|
master-bin.000001 # Execute_load_query 1 # use `test`; load data infile '../../std_data/words.dat' into table t2 ;file_id=1
|
||||||
master-bin.000001 # Query 1 # use `test`; COMMIT
|
master-bin.000001 # Query 1 # use `test`; COMMIT
|
||||||
master-bin.000001 # Query 1 # use `test`; alter table t1 add b int
|
master-bin.000001 # Query 1 # use `test`; alter table t1 add b int
|
||||||
|
@ -279,7 +279,6 @@ a b
|
|||||||
create table if not exists t1 select 3 as 'a',4 as 'b';
|
create table if not exists t1 select 3 as 'a',4 as 'b';
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1050 Table 't1' already exists
|
Note 1050 Table 't1' already exists
|
||||||
Warning 1364 Field 'a' doesn't have a default value
|
|
||||||
create table if not exists t1 select 3 as 'a',3 as 'b';
|
create table if not exists t1 select 3 as 'a',3 as 'b';
|
||||||
ERROR 23000: Duplicate entry '3' for key 1
|
ERROR 23000: Duplicate entry '3' for key 1
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -635,8 +634,6 @@ create table t1 (
|
|||||||
a varchar(112) charset utf8 collate utf8_bin not null,
|
a varchar(112) charset utf8 collate utf8_bin not null,
|
||||||
primary key (a)
|
primary key (a)
|
||||||
) select 'test' as a ;
|
) select 'test' as a ;
|
||||||
Warnings:
|
|
||||||
Warning 1364 Field 'a' doesn't have a default value
|
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
@ -652,9 +649,6 @@ create table t1 (
|
|||||||
a varchar(12) charset utf8 collate utf8_bin not null,
|
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||||
b int not null, primary key (a)
|
b int not null, primary key (a)
|
||||||
) select a, 1 as b from t2 ;
|
) select a, 1 as b from t2 ;
|
||||||
Warnings:
|
|
||||||
Warning 1364 Field 'a' doesn't have a default value
|
|
||||||
Warning 1364 Field 'b' doesn't have a default value
|
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
@ -664,12 +658,37 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (
|
create table t1 (
|
||||||
|
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||||
|
b int not null, primary key (a)
|
||||||
|
) select a, 1 as c from t2 ;
|
||||||
|
Warnings:
|
||||||
|
Warning 1364 Field 'b' doesn't have a default value
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`b` int(11) NOT NULL,
|
||||||
|
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL,
|
||||||
|
`c` bigint(1) NOT NULL default '0',
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
|
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||||
|
b int null, primary key (a)
|
||||||
|
) select a, 1 as c from t2 ;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`b` int(11) default NULL,
|
||||||
|
`a` varchar(12) character set utf8 collate utf8_bin NOT NULL,
|
||||||
|
`c` bigint(1) NOT NULL default '0',
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (
|
||||||
a varchar(12) charset utf8 collate utf8_bin not null,
|
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||||
b int not null, primary key (a)
|
b int not null, primary key (a)
|
||||||
) select 'a' as a , 1 as b from t2 ;
|
) select 'a' as a , 1 as b from t2 ;
|
||||||
Warnings:
|
|
||||||
Warning 1364 Field 'a' doesn't have a default value
|
|
||||||
Warning 1364 Field 'b' doesn't have a default value
|
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
@ -682,8 +701,6 @@ create table t1 (
|
|||||||
a varchar(12) charset utf8 collate utf8_bin,
|
a varchar(12) charset utf8 collate utf8_bin,
|
||||||
b int not null, primary key (a)
|
b int not null, primary key (a)
|
||||||
) select 'a' as a , 1 as b from t2 ;
|
) select 'a' as a , 1 as b from t2 ;
|
||||||
Warnings:
|
|
||||||
Warning 1364 Field 'b' doesn't have a default value
|
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
@ -702,8 +719,6 @@ a1 varchar(12) charset utf8 collate utf8_bin not null,
|
|||||||
a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int,
|
a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int,
|
||||||
primary key (a1)
|
primary key (a1)
|
||||||
) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ;
|
) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ;
|
||||||
Warnings:
|
|
||||||
Warning 1364 Field 'a1' doesn't have a default value
|
|
||||||
drop table t2;
|
drop table t2;
|
||||||
create table t2 (
|
create table t2 (
|
||||||
a1 varchar(12) charset utf8 collate utf8_bin,
|
a1 varchar(12) charset utf8 collate utf8_bin,
|
||||||
@ -719,8 +734,6 @@ a1 varchar(12) charset utf8 collate utf8_bin not null,
|
|||||||
a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int,
|
a2 int, a3 int, a4 int, a5 int, a6 int, a7 int, a8 int, a9 int,
|
||||||
primary key (a1)
|
primary key (a1)
|
||||||
) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ;
|
) select a1,a2,a3,a4,a5,a6,a7,a8,a9 from t1 ;
|
||||||
Warnings:
|
|
||||||
Warning 1364 Field 'a1' doesn't have a default value
|
|
||||||
drop table t2;
|
drop table t2;
|
||||||
create table t2 ( a int default 3, b int default 3)
|
create table t2 ( a int default 3, b int default 3)
|
||||||
select a1,a2 from t1;
|
select a1,a2 from t1;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1,t3,t4,t5;
|
||||||
create table t1 (a int, b char(10), key a(a), key b(a,b));
|
create table t1 (a int, b char(10), key a(a), key b(a,b));
|
||||||
insert into t1 values
|
insert into t1 values
|
||||||
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
||||||
|
@ -1077,6 +1077,22 @@ character_maximum_length character_octet_length
|
|||||||
32 32
|
32 32
|
||||||
64 64
|
64 64
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (f1 BIGINT, f2 VARCHAR(20), f3 BIGINT);
|
||||||
|
INSERT INTO t1 SET f1 = 1, f2 = 'Schoenenbourg', f3 = 1;
|
||||||
|
CREATE FUNCTION func2() RETURNS BIGINT RETURN 1;
|
||||||
|
CREATE FUNCTION func1() RETURNS BIGINT
|
||||||
|
BEGIN
|
||||||
|
RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.VIEWS);
|
||||||
|
END//
|
||||||
|
CREATE VIEW v1 AS SELECT 1 FROM t1
|
||||||
|
WHERE f3 = (SELECT func2 ());
|
||||||
|
SELECT func1();
|
||||||
|
func1()
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP FUNCTION func1;
|
||||||
|
DROP FUNCTION func2;
|
||||||
select * from information_schema.engines WHERE ENGINE="MyISAM";
|
select * from information_schema.engines WHERE ENGINE="MyISAM";
|
||||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||||
MyISAM ENABLED Default engine as of MySQL 3.23 with great performance NO NO NO
|
MyISAM ENABLED Default engine as of MySQL 3.23 with great performance NO NO NO
|
||||||
|
@ -5,8 +5,6 @@ select ((@id := kill_id) - kill_id) from t1;
|
|||||||
((@id := kill_id) - kill_id)
|
((@id := kill_id) - kill_id)
|
||||||
0
|
0
|
||||||
kill @id;
|
kill @id;
|
||||||
select 1;
|
|
||||||
Got one of the listed errors
|
|
||||||
select ((@id := kill_id) - kill_id) from t1;
|
select ((@id := kill_id) - kill_id) from t1;
|
||||||
((@id := kill_id) - kill_id)
|
((@id := kill_id) - kill_id)
|
||||||
0
|
0
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
DROP TABLE IF EXISTS t1,t2;
|
DROP TABLE IF EXISTS t1,t2,test1,test2;
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
INSERT INTO t1 VALUES (1),(2),(3);
|
INSERT INTO t1 VALUES (1),(2),(3);
|
||||||
CREATE TABLE t2 (a int, b int);
|
CREATE TABLE t2 (a int, b int);
|
||||||
|
@ -31,5 +31,5 @@ use test;
|
|||||||
select * from t1;
|
select * from t1;
|
||||||
n
|
n
|
||||||
1234
|
1234
|
||||||
drop table t1;
|
DROP DATABASE mysqltest1;
|
||||||
stop slave;
|
stop slave;
|
||||||
|
42
mysql-test/r/rpl_err_ignoredtable.result
Normal file
42
mysql-test/r/rpl_err_ignoredtable.result
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
create table t1 (a int primary key);
|
||||||
|
create table t4 (a int primary key);
|
||||||
|
insert into t1 values (1),(1);
|
||||||
|
ERROR 23000: Duplicate entry '1' for key 1
|
||||||
|
insert into t4 values (1),(2);
|
||||||
|
show tables like 't1';
|
||||||
|
Tables_in_test (t1)
|
||||||
|
show tables like 't4';
|
||||||
|
Tables_in_test (t4)
|
||||||
|
t4
|
||||||
|
SELECT * FROM test.t4;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
drop table t1;
|
||||||
|
select get_lock('crash_lock%20C', 10);
|
||||||
|
get_lock('crash_lock%20C', 10)
|
||||||
|
1
|
||||||
|
create table t2 (a int primary key);
|
||||||
|
insert into t2 values(1);
|
||||||
|
create table t3 (id int);
|
||||||
|
insert into t3 values(connection_id());
|
||||||
|
update t2 set a = a + 1 + get_lock('crash_lock%20C', 10);
|
||||||
|
select (@id := id) - id from t3;
|
||||||
|
(@id := id) - id
|
||||||
|
0
|
||||||
|
kill @id;
|
||||||
|
drop table t2,t3;
|
||||||
|
insert into t4 values (3),(4);
|
||||||
|
SELECT * FROM test.t4;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
DROP TABLE test.t4;
|
38
mysql-test/r/rpl_loaddata_m.result
Normal file
38
mysql-test/r/rpl_loaddata_m.result
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
drop database if exists mysqltest;
|
||||||
|
USE test;
|
||||||
|
CREATE TABLE t1(a INT, b INT, UNIQUE(b));
|
||||||
|
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE test.t1;
|
||||||
|
SELECT COUNT(*) FROM test.t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
CREATE DATABASE mysqltest;
|
||||||
|
USE mysqltest;
|
||||||
|
CREATE TABLE t1(a INT, b INT, UNIQUE(b));
|
||||||
|
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1;
|
||||||
|
SELECT COUNT(*) FROM mysqltest.t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
SHOW DATABASES;
|
||||||
|
Database
|
||||||
|
information_schema
|
||||||
|
mysql
|
||||||
|
mysqltest
|
||||||
|
test
|
||||||
|
USE test;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
USE mysqltest;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_mysqltest
|
||||||
|
t1
|
||||||
|
SELECT COUNT(*) FROM mysqltest.t1;
|
||||||
|
COUNT(*)
|
||||||
|
2
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
DROP TABLE test.t1;
|
@ -363,3 +363,4 @@ id hex(b1) vc bc d f total y t
|
|||||||
select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id;
|
select id,hex(b1),vc,bc,d,f,total,y,t from t1 order by id;
|
||||||
id hex(b1) vc bc d f total y t
|
id hex(b1) vc bc d f total y t
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
DROP DATABASE mysqltest1;
|
||||||
|
45
mysql-test/r/rpl_row_basic_11bugs.result
Normal file
45
mysql-test/r/rpl_row_basic_11bugs.result
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
CREATE DATABASE test_ignore;
|
||||||
|
**** On Master ****
|
||||||
|
SHOW DATABASES;
|
||||||
|
Database
|
||||||
|
information_schema
|
||||||
|
mysql
|
||||||
|
test
|
||||||
|
test_ignore
|
||||||
|
USE test;
|
||||||
|
CREATE TABLE t1 (a INT, b INT);
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
t1
|
||||||
|
INSERT INTO t1 VALUES (1,1), (2,2);
|
||||||
|
USE test_ignore;
|
||||||
|
CREATE TABLE t2 (a INT, b INT);
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test_ignore
|
||||||
|
t2
|
||||||
|
INSERT INTO t2 VALUES (3,3), (4,4);
|
||||||
|
SHOW BINLOG EVENTS;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
master-bin.000001 4 Format_desc 1 102 Server ver: 5.1.5-alpha-debug-log, Binlog ver: 4
|
||||||
|
master-bin.000001 102 Query 1 195 use `test`; CREATE TABLE t1 (a INT, b INT)
|
||||||
|
master-bin.000001 195 Table_map 1 235 test.t1
|
||||||
|
master-bin.000001 235 Write_rows 1 282
|
||||||
|
**** On Slave ****
|
||||||
|
SHOW DATABASES;
|
||||||
|
Database
|
||||||
|
information_schema
|
||||||
|
mysql
|
||||||
|
test
|
||||||
|
USE test;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
t1
|
||||||
|
USE test_ignore;
|
||||||
|
ERROR 42000: Unknown database 'test_ignore'
|
||||||
|
DROP DATABASE test_ignore;
|
159
mysql-test/r/rpl_row_blob_innodb.result
Normal file
159
mysql-test/r/rpl_row_blob_innodb.result
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
DROP TABLE IF EXISTS test.t1;
|
||||||
|
DROP TABLE IF EXISTS test.t2;
|
||||||
|
***** Table Create Section ****
|
||||||
|
|
||||||
|
CREATE TABLE test.t1 (c1 int not null auto_increment,
|
||||||
|
data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type;
|
||||||
|
|
||||||
|
**** Data Insert Section test.t1 *****
|
||||||
|
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, NULL);
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024));
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024));
|
||||||
|
CHECK TABLE test.t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
|
||||||
|
**** Data Insert Validation Master Section test.t1 ****
|
||||||
|
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
LENGTH(data)
|
||||||
|
NULL
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
LENGTH(data)
|
||||||
|
1024
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
|
||||||
|
LENGTH(data)
|
||||||
|
16384
|
||||||
|
|
||||||
|
**** Data Insert Validation Slave Section test.t1 ****
|
||||||
|
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
LENGTH(data)
|
||||||
|
NULL
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
LENGTH(data)
|
||||||
|
1024
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
|
||||||
|
LENGTH(data)
|
||||||
|
16384
|
||||||
|
|
||||||
|
**** Data Update Section test.t1 ****
|
||||||
|
|
||||||
|
UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1;
|
||||||
|
UPDATE t1 set data=repeat('c',17*1024) where c1 = 2;
|
||||||
|
|
||||||
|
**** Data Update Validation Master Section test.t1 ****
|
||||||
|
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
LENGTH(data)
|
||||||
|
18432
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
LENGTH(data)
|
||||||
|
17408
|
||||||
|
|
||||||
|
**** Data Update Validation Slave Section test.t1 ****
|
||||||
|
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
LENGTH(data)
|
||||||
|
18432
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
LENGTH(data)
|
||||||
|
17408
|
||||||
|
|
||||||
|
**** End Test Section test.t1 ****
|
||||||
|
|
||||||
|
**** Create Table test.t2 ****
|
||||||
|
|
||||||
|
CREATE TABLE test.t2 (
|
||||||
|
c1 INT NOT NULL PRIMARY KEY,
|
||||||
|
c2 TEXT,
|
||||||
|
c3 INT,
|
||||||
|
c4 LONGBLOB,
|
||||||
|
KEY(c3))ENGINE=$engine_type;
|
||||||
|
|
||||||
|
*** Setup Values For test.t2 ***
|
||||||
|
set @x0 = '01234567012345670123456701234567';
|
||||||
|
set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0);
|
||||||
|
set @b1 = 'b1';
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@x0);
|
||||||
|
set @d1 = 'dd1';
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
set @b2 = 'b2';
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @d2 = 'dd2';
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
|
||||||
|
**** Data Insert Section test.t2 *****
|
||||||
|
|
||||||
|
INSERT INTO test.t2 VALUES(1,@b1,111,@d1);
|
||||||
|
INSERT INTO test.t2 VALUES(2,@b2,222,@d2);
|
||||||
|
|
||||||
|
**** Data Insert Validation Master Section test.t2 ****
|
||||||
|
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
1 2256 b1 3000 dd1
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
2 20000 b2 30000 dd2
|
||||||
|
|
||||||
|
**** Data Insert Validation Slave Section test.t2 ****
|
||||||
|
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
1 2256 b1 3000 dd1
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
2 20000 b2 30000 dd2
|
||||||
|
|
||||||
|
**** Data Update Section test.t2 ****
|
||||||
|
|
||||||
|
UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1;
|
||||||
|
UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2;
|
||||||
|
|
||||||
|
**** Data Update Validation Master Section test.t2 ****
|
||||||
|
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
1 20000 b2 30000 dd2
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
2 2256 b1 3000 dd1
|
||||||
|
|
||||||
|
**** Data Update Validation Slave Section test.t2 ****
|
||||||
|
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
1 20000 b2 30000 dd2
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
2 2256 b1 3000 dd1
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS test.t1;
|
||||||
|
DROP TABLE IF EXISTS test.t2;
|
159
mysql-test/r/rpl_row_blob_myisam.result
Normal file
159
mysql-test/r/rpl_row_blob_myisam.result
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
stop slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
reset master;
|
||||||
|
reset slave;
|
||||||
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||||
|
start slave;
|
||||||
|
DROP TABLE IF EXISTS test.t1;
|
||||||
|
DROP TABLE IF EXISTS test.t2;
|
||||||
|
***** Table Create Section ****
|
||||||
|
|
||||||
|
CREATE TABLE test.t1 (c1 int not null auto_increment,
|
||||||
|
data LONGBLOB, PRIMARY KEY(c1))ENGINE=$engine_type;
|
||||||
|
|
||||||
|
**** Data Insert Section test.t1 *****
|
||||||
|
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, NULL);
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, repeat('a',1*1024));
|
||||||
|
INSERT INTO test.t1 VALUES (NULL, repeat('b',16*1024));
|
||||||
|
CHECK TABLE test.t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
|
||||||
|
**** Data Insert Validation Master Section test.t1 ****
|
||||||
|
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
LENGTH(data)
|
||||||
|
NULL
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
LENGTH(data)
|
||||||
|
1024
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
|
||||||
|
LENGTH(data)
|
||||||
|
16384
|
||||||
|
|
||||||
|
**** Data Insert Validation Slave Section test.t1 ****
|
||||||
|
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
LENGTH(data)
|
||||||
|
NULL
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
LENGTH(data)
|
||||||
|
1024
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 3;
|
||||||
|
LENGTH(data)
|
||||||
|
16384
|
||||||
|
|
||||||
|
**** Data Update Section test.t1 ****
|
||||||
|
|
||||||
|
UPDATE test.t1 set data=repeat('a',18*1024) where c1 = 1;
|
||||||
|
UPDATE t1 set data=repeat('c',17*1024) where c1 = 2;
|
||||||
|
|
||||||
|
**** Data Update Validation Master Section test.t1 ****
|
||||||
|
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
LENGTH(data)
|
||||||
|
18432
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
LENGTH(data)
|
||||||
|
17408
|
||||||
|
|
||||||
|
**** Data Update Validation Slave Section test.t1 ****
|
||||||
|
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 1;
|
||||||
|
LENGTH(data)
|
||||||
|
18432
|
||||||
|
SELECT LENGTH(data) FROM test.t1 WHERE c1 = 2;
|
||||||
|
LENGTH(data)
|
||||||
|
17408
|
||||||
|
|
||||||
|
**** End Test Section test.t1 ****
|
||||||
|
|
||||||
|
**** Create Table test.t2 ****
|
||||||
|
|
||||||
|
CREATE TABLE test.t2 (
|
||||||
|
c1 INT NOT NULL PRIMARY KEY,
|
||||||
|
c2 TEXT,
|
||||||
|
c3 INT,
|
||||||
|
c4 LONGBLOB,
|
||||||
|
KEY(c3))ENGINE=$engine_type;
|
||||||
|
|
||||||
|
*** Setup Values For test.t2 ***
|
||||||
|
set @x0 = '01234567012345670123456701234567';
|
||||||
|
set @x0 = concat(@x0,@x0,@x0,@x0,@x0,@x0,@x0,@x0);
|
||||||
|
set @b1 = 'b1';
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1,@b1);
|
||||||
|
set @b1 = concat(@b1,@x0);
|
||||||
|
set @d1 = 'dd1';
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
set @d1 = concat(@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1,@d1);
|
||||||
|
set @b2 = 'b2';
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @b2 = concat(@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2,@b2);
|
||||||
|
set @d2 = 'dd2';
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
set @d2 = concat(@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2,@d2);
|
||||||
|
|
||||||
|
**** Data Insert Section test.t2 *****
|
||||||
|
|
||||||
|
INSERT INTO test.t2 VALUES(1,@b1,111,@d1);
|
||||||
|
INSERT INTO test.t2 VALUES(2,@b2,222,@d2);
|
||||||
|
|
||||||
|
**** Data Insert Validation Master Section test.t2 ****
|
||||||
|
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
1 2256 b1 3000 dd1
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
2 20000 b2 30000 dd2
|
||||||
|
|
||||||
|
**** Data Insert Validation Slave Section test.t2 ****
|
||||||
|
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
1 2256 b1 3000 dd1
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
2 20000 b2 30000 dd2
|
||||||
|
|
||||||
|
**** Data Update Section test.t2 ****
|
||||||
|
|
||||||
|
UPDATE test.t2 SET c2=@b2, c4=@d2 WHERE c1=1;
|
||||||
|
UPDATE test.t2 SET c2=@b1, c4=@d1 WHERE c1=2;
|
||||||
|
|
||||||
|
**** Data Update Validation Master Section test.t2 ****
|
||||||
|
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
1 20000 b2 30000 dd2
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
2 2256 b1 3000 dd1
|
||||||
|
|
||||||
|
**** Data Update Validation Slave Section test.t2 ****
|
||||||
|
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=1;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
1 20000 b2 30000 dd2
|
||||||
|
SELECT c1, LENGTH(c2), SUBSTR(c2,1+2*900,2), LENGTH(c4), SUBSTR(c4,1+3*900,3)
|
||||||
|
FROM test.t2 WHERE c1=2;
|
||||||
|
c1 LENGTH(c2) SUBSTR(c2,1+2*900,2) LENGTH(c4) SUBSTR(c4,1+3*900,3)
|
||||||
|
2 2256 b1 3000 dd1
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS test.t1;
|
||||||
|
DROP TABLE IF EXISTS test.t2;
|
@ -58,6 +58,9 @@ insert into t1 values (15);
|
|||||||
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1;
|
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1;
|
||||||
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
|
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
|
||||||
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
|
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
create procedure foo4()
|
create procedure foo4()
|
||||||
deterministic
|
deterministic
|
||||||
begin
|
begin
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,39 +0,0 @@
|
|||||||
stop slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
reset master;
|
|
||||||
reset slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
start slave;
|
|
||||||
create table t1 (a int primary key);
|
|
||||||
insert into t1 values (1),(1);
|
|
||||||
ERROR 23000: Duplicate entry '1' for key 1
|
|
||||||
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
|
|
||||||
# 127.0.0.1 root MASTER_PORT 1 master-bin.000001 292 # # master-bin.000001 Yes Yes test.t3,test.t1,test.t2 0 0 292 # None 0 No #
|
|
||||||
show tables like 't1';
|
|
||||||
Tables_in_test (t1)
|
|
||||||
drop table t1;
|
|
||||||
select get_lock('crash_lock%20C', 10);
|
|
||||||
get_lock('crash_lock%20C', 10)
|
|
||||||
1
|
|
||||||
create table t2 (a int primary key);
|
|
||||||
insert into t2 values(1);
|
|
||||||
create table t3 (id int);
|
|
||||||
insert into t3 values(connection_id());
|
|
||||||
update t2 set a = a + 1 + get_lock('crash_lock%20C', 10);
|
|
||||||
select (@id := id) - id from t3;
|
|
||||||
(@id := id) - id
|
|
||||||
0
|
|
||||||
kill @id;
|
|
||||||
drop table t2,t3;
|
|
||||||
show binlog events from 102;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t1 (a int primary key)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t1 values (1),(1)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; drop table t1
|
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t2 (a int primary key)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t2 values(1)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; create table t3 (id int)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; insert into t3 values(connection_id())
|
|
||||||
master-bin.000001 # Query 1 # use `test`; update t2 set a = a + 1 + get_lock('crash_lock%20C', 10)
|
|
||||||
master-bin.000001 # Query 1 # use `test`; drop table t2,t3
|
|
@ -1,20 +0,0 @@
|
|||||||
stop slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
reset master;
|
|
||||||
reset slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
start slave;
|
|
||||||
drop database if exists mysqltest;
|
|
||||||
stop slave;
|
|
||||||
create database mysqltest;
|
|
||||||
use mysqltest;
|
|
||||||
create table t1(a int, b int, unique(b));
|
|
||||||
load data infile '../../std_data/rpl_loaddata.dat' into table t1;
|
|
||||||
show binlog events from 102;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
master-bin.000001 # Query 1 # drop database if exists mysqltest
|
|
||||||
master-bin.000001 # Query 1 # create database mysqltest
|
|
||||||
master-bin.000001 # Query 1 # use `mysqltest`; create table t1(a int, b int, unique(b))
|
|
||||||
master-bin.000001 # Begin_load_query 1 # ;file_id=1;block_len=12
|
|
||||||
master-bin.000001 # Execute_load_query 1 # use `mysqltest`; load data infile '../../std_data/rpl_loaddata.dat' into table t1 ;file_id=1
|
|
||||||
drop database mysqltest;
|
|
@ -1,93 +0,0 @@
|
|||||||
stop slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
reset master;
|
|
||||||
reset slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
start slave;
|
|
||||||
drop database if exists mysqltest1;
|
|
||||||
create database mysqltest1;
|
|
||||||
use mysqltest1;
|
|
||||||
create table t1 (a int);
|
|
||||||
insert into t1 values(9);
|
|
||||||
select * from mysqltest1.t1;
|
|
||||||
a
|
|
||||||
9
|
|
||||||
show databases like 'mysqltest1';
|
|
||||||
Database (mysqltest1)
|
|
||||||
mysqltest1
|
|
||||||
select * from test.t1;
|
|
||||||
a
|
|
||||||
9
|
|
||||||
drop table t1;
|
|
||||||
drop database mysqltest1;
|
|
||||||
drop database if exists rewrite;
|
|
||||||
create database rewrite;
|
|
||||||
use test;
|
|
||||||
create table t1 (a date, b date, c date not null, d date);
|
|
||||||
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',';
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'a' at row 1
|
|
||||||
Warning 1265 Data truncated for column 'c' at row 1
|
|
||||||
Warning 1265 Data truncated for column 'd' at row 1
|
|
||||||
Warning 1265 Data truncated for column 'a' at row 2
|
|
||||||
Warning 1265 Data truncated for column 'b' at row 2
|
|
||||||
Warning 1265 Data truncated for column 'd' at row 2
|
|
||||||
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' IGNORE 2 LINES;
|
|
||||||
select * from rewrite.t1;
|
|
||||||
a b c d
|
|
||||||
0000-00-00 NULL 0000-00-00 0000-00-00
|
|
||||||
0000-00-00 0000-00-00 0000-00-00 0000-00-00
|
|
||||||
2003-03-03 2003-03-03 2003-03-03 NULL
|
|
||||||
2003-03-03 2003-03-03 2003-03-03 NULL
|
|
||||||
truncate table t1;
|
|
||||||
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' LINES STARTING BY ',' (b,c,d);
|
|
||||||
Warnings:
|
|
||||||
Warning 1265 Data truncated for column 'c' at row 1
|
|
||||||
Warning 1265 Data truncated for column 'd' at row 1
|
|
||||||
Warning 1265 Data truncated for column 'b' at row 2
|
|
||||||
Warning 1265 Data truncated for column 'd' at row 2
|
|
||||||
select * from rewrite.t1;
|
|
||||||
a b c d
|
|
||||||
NULL NULL 0000-00-00 0000-00-00
|
|
||||||
NULL 0000-00-00 0000-00-00 0000-00-00
|
|
||||||
NULL 2003-03-03 2003-03-03 NULL
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a text, b text);
|
|
||||||
load data infile '../../std_data/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''';
|
|
||||||
Warnings:
|
|
||||||
Warning 1261 Row 3 doesn't contain data for all columns
|
|
||||||
select concat('|',a,'|'), concat('|',b,'|') from rewrite.t1;
|
|
||||||
concat('|',a,'|') concat('|',b,'|')
|
|
||||||
|Field A| |Field B|
|
|
||||||
|Field 1| |Field 2'
|
|
||||||
Field 3,'Field 4|
|
|
||||||
|Field 5' ,'Field 6| NULL
|
|
||||||
|Field 6| | 'Field 7'|
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a int, b char(10));
|
|
||||||
load data infile '../../std_data/loaddata3.dat' into table t1 fields terminated by '' enclosed by '' ignore 1 lines;
|
|
||||||
Warnings:
|
|
||||||
Warning 1264 Out of range value for column 'a' at row 3
|
|
||||||
Warning 1262 Row 3 was truncated; it contained more data than there were input columns
|
|
||||||
Warning 1264 Out of range value for column 'a' at row 5
|
|
||||||
Warning 1262 Row 5 was truncated; it contained more data than there were input columns
|
|
||||||
select * from rewrite.t1;
|
|
||||||
a b
|
|
||||||
1 row 1
|
|
||||||
2 row 2
|
|
||||||
0 1234567890
|
|
||||||
3 row 3
|
|
||||||
0 1234567890
|
|
||||||
truncate table t1;
|
|
||||||
load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated by '' enclosed by '' lines terminated by '' ignore 1 lines;
|
|
||||||
Warnings:
|
|
||||||
Warning 1264 Out of range value for column 'a' at row 4
|
|
||||||
Warning 1261 Row 4 doesn't contain data for all columns
|
|
||||||
select * from rewrite.t1;
|
|
||||||
a b
|
|
||||||
1 row 1
|
|
||||||
2 row 2
|
|
||||||
3 row 3
|
|
||||||
0
|
|
||||||
drop database rewrite;
|
|
||||||
drop table t1;
|
|
@ -57,6 +57,9 @@ insert into t1 values (15);
|
|||||||
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1;
|
grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1;
|
||||||
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
|
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
|
||||||
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
|
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
|
||||||
|
SELECT 1;
|
||||||
|
1
|
||||||
|
1
|
||||||
create procedure foo4()
|
create procedure foo4()
|
||||||
deterministic
|
deterministic
|
||||||
begin
|
begin
|
||||||
|
@ -1,127 +0,0 @@
|
|||||||
stop slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
reset master;
|
|
||||||
reset slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
start slave;
|
|
||||||
set timestamp=100000000;
|
|
||||||
create table t1 (t timestamp);
|
|
||||||
create table t2 (t char(32));
|
|
||||||
select @@time_zone;
|
|
||||||
@@time_zone
|
|
||||||
Japan
|
|
||||||
select @@time_zone;
|
|
||||||
@@time_zone
|
|
||||||
Europe/Moscow
|
|
||||||
insert into t1 values ('20050101000000'), ('20050611093902');
|
|
||||||
set time_zone='UTC';
|
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
|
||||||
select * from t1;
|
|
||||||
t
|
|
||||||
2004-12-31 21:00:00
|
|
||||||
2005-06-11 05:39:02
|
|
||||||
2004-01-01 00:00:00
|
|
||||||
2004-06-11 09:39:02
|
|
||||||
set time_zone='UTC';
|
|
||||||
select * from t1;
|
|
||||||
t
|
|
||||||
2004-12-31 21:00:00
|
|
||||||
2005-06-11 05:39:02
|
|
||||||
2004-01-01 00:00:00
|
|
||||||
2004-06-11 09:39:02
|
|
||||||
delete from t1;
|
|
||||||
set time_zone='Europe/Moscow';
|
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
|
||||||
select * from t1;
|
|
||||||
t
|
|
||||||
2004-01-01 00:00:00
|
|
||||||
2004-06-11 09:39:02
|
|
||||||
set time_zone='Europe/Moscow';
|
|
||||||
select * from t1;
|
|
||||||
t
|
|
||||||
2004-01-01 00:00:00
|
|
||||||
2004-06-11 09:39:02
|
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
||||||
ROLLBACK;
|
|
||||||
use test;
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
|
||||||
SET @@session.sql_mode=0;
|
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
|
||||||
create table t1 (t timestamp);
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
create table t2 (t char(32));
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
SET @@session.time_zone='Europe/Moscow';
|
|
||||||
insert into t1 values ('20050101000000'), ('20050611093902');
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
SET @@session.time_zone='UTC';
|
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
delete from t1;
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
SET @@session.time_zone='Europe/Moscow';
|
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
|
||||||
# End of log file
|
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
||||||
delete from t1;
|
|
||||||
set time_zone='UTC';
|
|
||||||
load data infile '../../std_data/rpl_timezone.dat' into table t1;
|
|
||||||
select * from t1;
|
|
||||||
t
|
|
||||||
2004-01-01 00:00:00
|
|
||||||
2004-06-11 09:39:02
|
|
||||||
set time_zone='UTC';
|
|
||||||
select * from t1;
|
|
||||||
t
|
|
||||||
2004-01-01 00:00:00
|
|
||||||
2004-06-11 09:39:02
|
|
||||||
set time_zone='Europe/Moscow';
|
|
||||||
set time_zone='Europe/Moscow';
|
|
||||||
delete from t1;
|
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
|
||||||
set time_zone='MET';
|
|
||||||
insert into t2 (select t from t1);
|
|
||||||
select * from t1;
|
|
||||||
t
|
|
||||||
2003-12-31 22:00:00
|
|
||||||
2004-06-11 07:39:02
|
|
||||||
select * from t2;
|
|
||||||
t
|
|
||||||
2003-12-31 22:00:00
|
|
||||||
2004-06-11 07:39:02
|
|
||||||
delete from t2;
|
|
||||||
set timestamp=1000072000;
|
|
||||||
insert into t2 values (current_timestamp), (current_date), (current_time);
|
|
||||||
select * from t2;
|
|
||||||
t
|
|
||||||
2001-09-09 23:46:40
|
|
||||||
2001-09-09
|
|
||||||
23:46:40
|
|
||||||
delete from t2;
|
|
||||||
insert into t2 values (from_unixtime(1000000000)),
|
|
||||||
(unix_timestamp('2001-09-09 03:46:40'));
|
|
||||||
select * from t2;
|
|
||||||
t
|
|
||||||
2001-09-09 03:46:40
|
|
||||||
1000000000
|
|
||||||
select * from t2;
|
|
||||||
t
|
|
||||||
2001-09-09 03:46:40
|
|
||||||
1000000000
|
|
||||||
set global time_zone='MET';
|
|
||||||
delete from t2;
|
|
||||||
set time_zone='UTC';
|
|
||||||
insert into t2 values(convert_tz('2004-01-01 00:00:00','MET',@@time_zone));
|
|
||||||
insert into t2 values(convert_tz('2005-01-01 00:00:00','MET','Japan'));
|
|
||||||
select * from t2;
|
|
||||||
t
|
|
||||||
2003-12-31 23:00:00
|
|
||||||
2005-01-01 08:00:00
|
|
||||||
select * from t2;
|
|
||||||
t
|
|
||||||
2003-12-31 23:00:00
|
|
||||||
2005-01-01 08:00:00
|
|
||||||
drop table t1, t2;
|
|
@ -1,82 +0,0 @@
|
|||||||
stop slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
reset master;
|
|
||||||
reset slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
start slave;
|
|
||||||
reset master;
|
|
||||||
create table t1(n char(30));
|
|
||||||
set @i1:=12345678901234, @i2:=-12345678901234, @i3:=0, @i4:=-1;
|
|
||||||
set @s1:='This is a test', @r1:=12.5, @r2:=-12.5;
|
|
||||||
set @n1:=null;
|
|
||||||
set @s2:='', @s3:='abc\'def', @s4:= 'abc\\def', @s5:= 'abc''def';
|
|
||||||
insert into t1 values (@i1), (@i2), (@i3), (@i4);
|
|
||||||
insert into t1 values (@r1), (@r2);
|
|
||||||
insert into t1 values (@s1), (@s2), (@s3), (@s4), (@s5);
|
|
||||||
insert into t1 values (@n1);
|
|
||||||
insert into t1 values (@n2);
|
|
||||||
insert into t1 values (@a:=0), (@a:=@a+1), (@a:=@a+1);
|
|
||||||
insert into t1 values (@a+(@b:=@a+1));
|
|
||||||
set @q:='abc';
|
|
||||||
insert t1 values (@q), (@q:=concat(@q, 'n1')), (@q:=concat(@q, 'n2'));
|
|
||||||
set @a:=5;
|
|
||||||
insert into t1 values (@a),(@a);
|
|
||||||
select * from t1 where n = '<nonexistant>';
|
|
||||||
n
|
|
||||||
insert into t1 values (@a),(@a),(@a*5);
|
|
||||||
select * from t1;
|
|
||||||
n
|
|
||||||
12345678901234
|
|
||||||
-12345678901234
|
|
||||||
0
|
|
||||||
-1
|
|
||||||
12.5
|
|
||||||
-12.5
|
|
||||||
This is a test
|
|
||||||
|
|
||||||
abc'def
|
|
||||||
abc\def
|
|
||||||
abc'def
|
|
||||||
NULL
|
|
||||||
NULL
|
|
||||||
0
|
|
||||||
1
|
|
||||||
2
|
|
||||||
5
|
|
||||||
abc
|
|
||||||
abcn1
|
|
||||||
abcn1n2
|
|
||||||
5
|
|
||||||
5
|
|
||||||
NULL
|
|
||||||
NULL
|
|
||||||
NULL
|
|
||||||
select * from t1;
|
|
||||||
n
|
|
||||||
12345678901234
|
|
||||||
-12345678901234
|
|
||||||
0
|
|
||||||
-1
|
|
||||||
12.5
|
|
||||||
-12.5
|
|
||||||
This is a test
|
|
||||||
|
|
||||||
abc'def
|
|
||||||
abc\def
|
|
||||||
abc'def
|
|
||||||
NULL
|
|
||||||
NULL
|
|
||||||
0
|
|
||||||
1
|
|
||||||
2
|
|
||||||
5
|
|
||||||
abc
|
|
||||||
abcn1
|
|
||||||
abcn1n2
|
|
||||||
5
|
|
||||||
5
|
|
||||||
NULL
|
|
||||||
NULL
|
|
||||||
NULL
|
|
||||||
drop table t1;
|
|
||||||
stop slave;
|
|
@ -1,56 +0,0 @@
|
|||||||
stop slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
reset master;
|
|
||||||
reset slave;
|
|
||||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
||||||
start slave;
|
|
||||||
drop table if exists t1,v1;
|
|
||||||
drop view if exists t1,v1;
|
|
||||||
reset master;
|
|
||||||
create table t1 (a int);
|
|
||||||
insert into t1 values (1);
|
|
||||||
create view v1 as select a from t1;
|
|
||||||
insert into v1 values (2);
|
|
||||||
select * from v1 order by a;
|
|
||||||
a
|
|
||||||
1
|
|
||||||
2
|
|
||||||
select * from v1 order by a;
|
|
||||||
a
|
|
||||||
1
|
|
||||||
2
|
|
||||||
update v1 set a=3 where a=1;
|
|
||||||
select * from v1 order by a;
|
|
||||||
a
|
|
||||||
2
|
|
||||||
3
|
|
||||||
select * from v1 order by a;
|
|
||||||
a
|
|
||||||
2
|
|
||||||
3
|
|
||||||
delete from v1 where a=2;
|
|
||||||
select * from v1 order by a;
|
|
||||||
a
|
|
||||||
3
|
|
||||||
select * from v1 order by a;
|
|
||||||
a
|
|
||||||
3
|
|
||||||
alter view v1 as select a as b from t1;
|
|
||||||
select * from v1 order by 1;
|
|
||||||
b
|
|
||||||
3
|
|
||||||
drop view v1;
|
|
||||||
select * from v1 order by a;
|
|
||||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
|
||||||
drop table t1;
|
|
||||||
show binlog events limit 1,100;
|
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; create table t1 (a int)
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; insert into t1 values (1)
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a from t1
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; insert into v1 values (2)
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; update v1 set a=3 where a=1
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; delete from v1 where a=2
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; ALTER ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW v1 AS select a as b from t1
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; drop view v1
|
|
||||||
slave-bin.000001 # Query 1 # use `test`; drop table t1
|
|
@ -9,7 +9,7 @@ create table t1 (t timestamp, n int not null auto_increment, PRIMARY KEY(n));
|
|||||||
create table t2 (t char(32), n int not null auto_increment, PRIMARY KEY(n));
|
create table t2 (t char(32), n int not null auto_increment, PRIMARY KEY(n));
|
||||||
select @@time_zone;
|
select @@time_zone;
|
||||||
@@time_zone
|
@@time_zone
|
||||||
Europe/Moscow
|
Japan
|
||||||
select @@time_zone;
|
select @@time_zone;
|
||||||
@@time_zone
|
@@time_zone
|
||||||
Europe/Moscow
|
Europe/Moscow
|
||||||
@ -23,10 +23,10 @@ t n
|
|||||||
2004-06-11 09:39:02 4
|
2004-06-11 09:39:02 4
|
||||||
select * from t1;
|
select * from t1;
|
||||||
t n
|
t n
|
||||||
2005-01-01 00:00:00 1
|
2005-01-01 06:00:00 1
|
||||||
2005-06-11 09:39:02 2
|
2005-06-11 14:39:02 2
|
||||||
2004-01-01 00:00:00 3
|
2004-01-01 06:00:00 3
|
||||||
2004-06-11 09:39:02 4
|
2004-06-11 14:39:02 4
|
||||||
delete from t1;
|
delete from t1;
|
||||||
set time_zone='Europe/Moscow';
|
set time_zone='Europe/Moscow';
|
||||||
insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL);
|
insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL);
|
||||||
@ -39,22 +39,6 @@ select * from t1;
|
|||||||
t n
|
t n
|
||||||
2004-01-01 00:00:00 5
|
2004-01-01 00:00:00 5
|
||||||
2004-06-11 09:39:02 6
|
2004-06-11 09:39:02 6
|
||||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
||||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
||||||
ROLLBACK;
|
|
||||||
use test;
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1;
|
|
||||||
SET @@session.sql_mode=0;
|
|
||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8;
|
|
||||||
create table t1 (t timestamp, n int not null auto_increment, PRIMARY KEY(n));
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
create table t2 (t char(32), n int not null auto_increment, PRIMARY KEY(n));
|
|
||||||
SET TIMESTAMP=100000000;
|
|
||||||
delete from t1;
|
|
||||||
# End of log file
|
|
||||||
ROLLBACK /* added by mysqlbinlog */;
|
|
||||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
||||||
delete from t1;
|
delete from t1;
|
||||||
set time_zone='UTC';
|
set time_zone='UTC';
|
||||||
load data infile '../../std_data/rpl_timezone2.dat' into table t1;
|
load data infile '../../std_data/rpl_timezone2.dat' into table t1;
|
@ -6,6 +6,7 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|||||||
start slave;
|
start slave;
|
||||||
drop table if exists t1,v1;
|
drop table if exists t1,v1;
|
||||||
drop view if exists t1,v1;
|
drop view if exists t1,v1;
|
||||||
|
reset master;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
insert into t1 values (1);
|
insert into t1 values (1);
|
||||||
create view v1 as select a from t1;
|
create view v1 as select a from t1;
|
@ -767,8 +767,7 @@ deallocate prepare stmt1;
|
|||||||
drop procedure p1;
|
drop procedure p1;
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
drop procedure if exists p2;
|
CREATE PROCEDURE `p1`()
|
||||||
CREATE PROCEDURE `p2`()
|
|
||||||
begin
|
begin
|
||||||
insert into t1 values (1);
|
insert into t1 values (1);
|
||||||
end//
|
end//
|
||||||
@ -777,8 +776,8 @@ begin
|
|||||||
declare done int default 0;
|
declare done int default 0;
|
||||||
set done= not done;
|
set done= not done;
|
||||||
end//
|
end//
|
||||||
CALL p2();
|
CALL p1();
|
||||||
drop procedure p2;
|
drop procedure p1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create trigger t1_bi before insert on test.t1 for each row set @a:=0;
|
create trigger t1_bi before insert on test.t1 for each row set @a:=0;
|
||||||
ERROR 3D000: No database selected
|
ERROR 3D000: No database selected
|
||||||
|
@ -2423,6 +2423,9 @@ drop view v1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1(f1 int, f2 int);
|
create table t1(f1 int, f2 int);
|
||||||
insert into t1 values (null, 10), (null,2);
|
insert into t1 values (null, 10), (null,2);
|
||||||
|
select f1, sum(f2) from t1 group by f1;
|
||||||
|
f1 sum(f2)
|
||||||
|
NULL 12
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
select f1, sum(f2) from v1 group by f1;
|
select f1, sum(f2) from v1 group by f1;
|
||||||
f1 sum(f2)
|
f1 sum(f2)
|
||||||
|
@ -1036,4 +1036,13 @@ create table t1 (a varchar(255) character set utf8,
|
|||||||
e varchar(255) character set utf8,
|
e varchar(255) character set utf8,
|
||||||
key (a,b,c,d,e)) engine=bdb;
|
key (a,b,c,d,e)) engine=bdb;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #14212: Server crash after COMMIT + ALTER TABLE
|
||||||
|
#
|
||||||
|
set autocommit=0;
|
||||||
|
create table t1 (a int) engine=bdb;
|
||||||
|
commit;
|
||||||
|
alter table t1 add primary key(a);
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -565,6 +565,22 @@ create table t1 (
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--warning 1364
|
||||||
|
create table t1 (
|
||||||
|
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||||
|
b int not null, primary key (a)
|
||||||
|
) select a, 1 as c from t2 ;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
--warning 1364
|
||||||
|
create table t1 (
|
||||||
|
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||||
|
b int null, primary key (a)
|
||||||
|
) select a, 1 as c from t2 ;
|
||||||
|
show create table t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--warning 1364
|
--warning 1364
|
||||||
create table t1 (
|
create table t1 (
|
||||||
a varchar(12) charset utf8 collate utf8_bin not null,
|
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||||
|
@ -11,17 +11,16 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
sp-goto : GOTO is currently is disabled - will be fixed in the future
|
sp-goto : GOTO is currently is disabled - will be fixed in the future
|
||||||
kill : Unstable test case, bug#9712
|
|
||||||
rpl_bit_npk : Bug #13418
|
rpl_bit_npk : Bug #13418
|
||||||
ndb_cache2 : Bug #15004
|
ndb_cache2 : Bug #15004
|
||||||
ndb_cache_multi2: Bug #15004
|
ndb_cache_multi2: Bug #15004
|
||||||
func_group : Bug #15448
|
func_group : Bug #15448
|
||||||
func_math : Bug #15448
|
func_math : Bug #15448
|
||||||
group_min_max : Bug #15448
|
group_min_max : Bug #15448
|
||||||
#mysqlslap : Bug #15483
|
|
||||||
innodb_concurrent : Results are not deterministic, Elliot will fix (BUG#3300)
|
innodb_concurrent : Results are not deterministic, Elliot will fix (BUG#3300)
|
||||||
subselect : Bug#15706
|
subselect : Bug#15706
|
||||||
type_time : Bug#15805
|
type_time : Bug#15805
|
||||||
#rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR
|
#rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR
|
||||||
ps_7ndb : Bug#15923 Core dump in RBR mode when executing test suite
|
#ps_7ndb : Bug#15923 Core dump in RBR mode when executing test suite
|
||||||
sp_trans : Bug#15924 Code dump in RBR mode when executing test suite
|
rpl_ddl : Bug#15963 SBR does not show "Definer" correctly
|
||||||
|
mysqlslap : Bug#16167
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1,t3,t4,t5;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
create table t1 (a int, b char(10), key a(a), key b(a,b));
|
create table t1 (a int, b char(10), key a(a), key b(a,b));
|
||||||
|
@ -769,6 +769,27 @@ from information_schema.columns where table_name='t1';
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
# Bug#15533 crash, information_schema, function, view
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 BIGINT, f2 VARCHAR(20), f3 BIGINT);
|
||||||
|
INSERT INTO t1 SET f1 = 1, f2 = 'Schoenenbourg', f3 = 1;
|
||||||
|
|
||||||
|
CREATE FUNCTION func2() RETURNS BIGINT RETURN 1;
|
||||||
|
|
||||||
|
delimiter //;
|
||||||
|
CREATE FUNCTION func1() RETURNS BIGINT
|
||||||
|
BEGIN
|
||||||
|
RETURN ( SELECT COUNT(*) FROM INFORMATION_SCHEMA.VIEWS);
|
||||||
|
END//
|
||||||
|
delimiter ;//
|
||||||
|
|
||||||
|
CREATE VIEW v1 AS SELECT 1 FROM t1
|
||||||
|
WHERE f3 = (SELECT func2 ());
|
||||||
|
SELECT func1();
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP FUNCTION func1;
|
||||||
|
DROP FUNCTION func2;
|
||||||
# Show engines
|
# Show engines
|
||||||
#
|
#
|
||||||
|
|
||||||
|
@ -25,11 +25,18 @@ select ((@id := kill_id) - kill_id) from t1;
|
|||||||
kill @id;
|
kill @id;
|
||||||
|
|
||||||
connection con1;
|
connection con1;
|
||||||
--sleep 1
|
--sleep 2
|
||||||
|
|
||||||
# this statement should fail
|
--disable_query_log
|
||||||
--error 2006,2013
|
--disable_result_log
|
||||||
|
# One of the following statements should fail
|
||||||
|
--error 0,2006,2013
|
||||||
select 1;
|
select 1;
|
||||||
|
--error 0,2006,2013
|
||||||
|
select 1;
|
||||||
|
--enable_query_log
|
||||||
|
--enable_result_log
|
||||||
|
|
||||||
--enable_reconnect
|
--enable_reconnect
|
||||||
# this should work, and we should have a new connection_id()
|
# this should work, and we should have a new connection_id()
|
||||||
select ((@id := kill_id) - kill_id) from t1;
|
select ((@id := kill_id) - kill_id) from t1;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
-- source include/not_embedded.inc
|
-- source include/not_embedded.inc
|
||||||
|
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
DROP TABLE IF EXISTS t1,t2;
|
DROP TABLE IF EXISTS t1,t2,test1,test2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -29,7 +29,6 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--source include/have_binlog_format_row.inc
|
|
||||||
--source include/master-slave.inc
|
--source include/master-slave.inc
|
||||||
let $engine_type= "InnoDB";
|
let $engine_type= "InnoDB";
|
||||||
-- source extra/rpl_tests/rpl_ddl.test
|
-- source extra/rpl_tests/rpl_ddl.test
|
@ -46,12 +46,13 @@ show tables;
|
|||||||
use test;
|
use test;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
|
|
||||||
|
system rm var/master-data/mysqltest1/f1.txt;
|
||||||
connection master;
|
connection master;
|
||||||
drop table t1;
|
DROP DATABASE mysqltest1;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
||||||
#cleanup
|
#cleanup
|
||||||
connection slave;
|
connection slave;
|
||||||
stop slave;
|
stop slave;
|
||||||
system rm -rf var/master-data/mysqltest1;
|
#system rm -rf var/master-data/mysqltest1;
|
||||||
|
|
||||||
|
@ -7,20 +7,19 @@
|
|||||||
|
|
||||||
connection master;
|
connection master;
|
||||||
create table t1 (a int primary key);
|
create table t1 (a int primary key);
|
||||||
|
create table t4 (a int primary key);
|
||||||
# generate an error that goes to the binlog
|
# generate an error that goes to the binlog
|
||||||
--error 1062
|
--error 1062
|
||||||
insert into t1 values (1),(1);
|
insert into t1 values (1),(1);
|
||||||
|
insert into t4 values (1),(2);
|
||||||
save_master_pos;
|
save_master_pos;
|
||||||
connection slave;
|
connection slave;
|
||||||
# as the t1 table is ignored on the slave, the slave should be able to sync
|
# as the t1 table is ignored on the slave, the slave should be able to sync
|
||||||
sync_with_master;
|
sync_with_master;
|
||||||
# The port number is different when doing the release build with
|
|
||||||
# Do-compile, hence we have to replace the port number here accordingly
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_PORT
|
|
||||||
--replace_column 1 # 8 # 9 # 23 # 33 #
|
|
||||||
show slave status;
|
|
||||||
# check that the table has been ignored, because otherwise the test is nonsense
|
# check that the table has been ignored, because otherwise the test is nonsense
|
||||||
show tables like 't1';
|
show tables like 't1';
|
||||||
|
show tables like 't4';
|
||||||
|
SELECT * FROM test.t4;
|
||||||
connection master;
|
connection master;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
save_master_pos;
|
save_master_pos;
|
||||||
@ -46,17 +45,20 @@ real_sleep 2;
|
|||||||
select (@id := id) - id from t3;
|
select (@id := id) - id from t3;
|
||||||
kill @id;
|
kill @id;
|
||||||
drop table t2,t3;
|
drop table t2,t3;
|
||||||
|
insert into t4 values (3),(4);
|
||||||
connection master;
|
connection master;
|
||||||
--error 0,1053,2013
|
--error 0,1053,2013
|
||||||
reap;
|
reap;
|
||||||
connection master1;
|
connection master1;
|
||||||
--replace_column 2 # 5 #
|
|
||||||
show binlog events from 102;
|
|
||||||
save_master_pos;
|
save_master_pos;
|
||||||
connection slave;
|
connection slave;
|
||||||
# SQL slave thread should not have stopped (because table of the killed
|
|
||||||
# query is in the ignore list).
|
|
||||||
sync_with_master;
|
sync_with_master;
|
||||||
|
SELECT * FROM test.t4;
|
||||||
|
|
||||||
|
connection master1;
|
||||||
|
DROP TABLE test.t4;
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
# Adding comment for force manual merge 5.0 -> wl1012. delete me if needed
|
# Adding comment for force manual merge 5.0 -> wl1012. delete me if needed
|
49
mysql-test/t/rpl_loaddata_m.test
Normal file
49
mysql-test/t/rpl_loaddata_m.test
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# See if the master logs LOAD DATA INFILE correctly when binlog_*_db rules
|
||||||
|
# exist.
|
||||||
|
# This is for BUG#1100 (LOAD DATA INFILE was half-logged).
|
||||||
|
######################################################
|
||||||
|
# Change Author: JBM
|
||||||
|
# Change Date: 2005-12-22
|
||||||
|
# Change: Test rewritten to remove show binlog events
|
||||||
|
# and to test the option better + Cleanup
|
||||||
|
######################################################
|
||||||
|
-- source include/master-slave.inc
|
||||||
|
|
||||||
|
--disable_warnings
|
||||||
|
drop database if exists mysqltest;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
# 'test' database should be ignored by the slave
|
||||||
|
USE test;
|
||||||
|
CREATE TABLE t1(a INT, b INT, UNIQUE(b));
|
||||||
|
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE test.t1;
|
||||||
|
SELECT COUNT(*) FROM test.t1;
|
||||||
|
|
||||||
|
# 'mysqltest' database should NOT be ignored by the slave
|
||||||
|
CREATE DATABASE mysqltest;
|
||||||
|
USE mysqltest;
|
||||||
|
CREATE TABLE t1(a INT, b INT, UNIQUE(b));
|
||||||
|
LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE mysqltest.t1;
|
||||||
|
SELECT COUNT(*) FROM mysqltest.t1;
|
||||||
|
|
||||||
|
# Now lets check the slave to see what we have :-)
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
|
||||||
|
SHOW DATABASES;
|
||||||
|
|
||||||
|
USE test;
|
||||||
|
SHOW TABLES;
|
||||||
|
|
||||||
|
USE mysqltest;
|
||||||
|
SHOW TABLES;
|
||||||
|
SELECT COUNT(*) FROM mysqltest.t1;
|
||||||
|
|
||||||
|
#show binlog events;
|
||||||
|
connection master;
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
DROP TABLE test.t1;
|
||||||
|
|
||||||
|
# End of test
|
@ -24,6 +24,7 @@ use mysqltest1;
|
|||||||
connection master;
|
connection master;
|
||||||
alter table t1 engine=myisam;
|
alter table t1 engine=myisam;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
alter table t1 engine=myisam;
|
alter table t1 engine=myisam;
|
||||||
@ -48,6 +49,7 @@ show create table t1;
|
|||||||
connection master;
|
connection master;
|
||||||
alter table t1 engine=memory;
|
alter table t1 engine=memory;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
alter table t1 engine=myisam;
|
alter table t1 engine=myisam;
|
||||||
@ -72,6 +74,7 @@ show create table t1;
|
|||||||
connection master;
|
connection master;
|
||||||
alter table t1 engine=innodb;
|
alter table t1 engine=innodb;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
sync_slave_with_master;
|
||||||
|
|
||||||
connection slave;
|
connection slave;
|
||||||
alter table t1 engine=myisam;
|
alter table t1 engine=myisam;
|
||||||
@ -94,6 +97,8 @@ show create table t1;
|
|||||||
# cleanup
|
# cleanup
|
||||||
connection master;
|
connection master;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
# Need to drop mysqltest1 as well so other test will pass.
|
||||||
|
DROP DATABASE mysqltest1;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
||||||
# End of 5.1 test case
|
# End of 5.1 test case
|
||||||
|
1
mysql-test/t/rpl_row_basic_11bugs-master.opt
Normal file
1
mysql-test/t/rpl_row_basic_11bugs-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--binlog_ignore_db=test_ignore;
|
31
mysql-test/t/rpl_row_basic_11bugs.test
Normal file
31
mysql-test/t/rpl_row_basic_11bugs.test
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
--source include/have_row_based.inc
|
||||||
|
--source include/have_binlog_format_row.inc
|
||||||
|
--source include/master-slave.inc
|
||||||
|
|
||||||
|
# Bug#15942 (RBR ignores --binlog_ignore_db and tries to map to table
|
||||||
|
# on slave for writes)
|
||||||
|
|
||||||
|
CREATE DATABASE test_ignore; # --binlog_ignore_db=mysqltest_ignore
|
||||||
|
|
||||||
|
--echo **** On Master ****
|
||||||
|
SHOW DATABASES;
|
||||||
|
USE test;
|
||||||
|
CREATE TABLE t1 (a INT, b INT);
|
||||||
|
SHOW TABLES;
|
||||||
|
INSERT INTO t1 VALUES (1,1), (2,2);
|
||||||
|
USE test_ignore;
|
||||||
|
CREATE TABLE t2 (a INT, b INT);
|
||||||
|
SHOW TABLES;
|
||||||
|
INSERT INTO t2 VALUES (3,3), (4,4);
|
||||||
|
SHOW BINLOG EVENTS;
|
||||||
|
sync_slave_with_master;
|
||||||
|
--echo **** On Slave ****
|
||||||
|
SHOW DATABASES;
|
||||||
|
USE test;
|
||||||
|
SHOW TABLES;
|
||||||
|
--error 1049
|
||||||
|
USE test_ignore;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
DROP DATABASE test_ignore;
|
||||||
|
sync_slave_with_master;
|
7
mysql-test/t/rpl_row_blob_innodb.test
Normal file
7
mysql-test/t/rpl_row_blob_innodb.test
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#################################
|
||||||
|
# Wrapper for rpl_row_blob.test#
|
||||||
|
#################################
|
||||||
|
-- source include/have_innodb.inc
|
||||||
|
let $engine_type=INNODB;
|
||||||
|
-- source extra/rpl_tests/rpl_row_blob.test
|
||||||
|
|
6
mysql-test/t/rpl_row_blob_myisam.test
Normal file
6
mysql-test/t/rpl_row_blob_myisam.test
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
#################################
|
||||||
|
# Wrapper for rpl_row_blob.test#
|
||||||
|
#################################
|
||||||
|
let $engine_type=myisam;
|
||||||
|
-- source extra/rpl_tests/rpl_row_blob.test
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
# Requires statement logging
|
# Requires row base logging
|
||||||
-- source include/have_binlog_format_row.inc
|
-- source include/have_binlog_format_row.inc
|
||||||
-- source extra/rpl_tests/rpl_log.test
|
-- source extra/rpl_tests/rpl_log.test
|
||||||
|
|
||||||
|
@ -1,83 +0,0 @@
|
|||||||
# TBF - difference in row level logging
|
|
||||||
-- source include/have_binlog_format_row.inc
|
|
||||||
-- source include/master-slave.inc
|
|
||||||
|
|
||||||
--disable_warnings
|
|
||||||
drop database if exists mysqltest1;
|
|
||||||
--enable_warnings
|
|
||||||
create database mysqltest1;
|
|
||||||
|
|
||||||
use mysqltest1;
|
|
||||||
create table t1 (a int);
|
|
||||||
insert into t1 values(9);
|
|
||||||
select * from mysqltest1.t1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
show databases like 'mysqltest1'; # should be empty
|
|
||||||
select * from test.t1;
|
|
||||||
# cleanup
|
|
||||||
connection master;
|
|
||||||
drop table t1;
|
|
||||||
drop database mysqltest1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
|
|
||||||
#
|
|
||||||
# BUG#6353:
|
|
||||||
# Option --replicate-rewrite-db should work together with LOAD DATA INFILE
|
|
||||||
#
|
|
||||||
|
|
||||||
connection slave;
|
|
||||||
--disable_warnings
|
|
||||||
drop database if exists rewrite;
|
|
||||||
--enable_warnings
|
|
||||||
create database rewrite;
|
|
||||||
|
|
||||||
connection master;
|
|
||||||
use test;
|
|
||||||
create table t1 (a date, b date, c date not null, d date);
|
|
||||||
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',';
|
|
||||||
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' IGNORE 2 LINES;
|
|
||||||
sync_slave_with_master;
|
|
||||||
|
|
||||||
connection slave;
|
|
||||||
select * from rewrite.t1;
|
|
||||||
|
|
||||||
connection master;
|
|
||||||
truncate table t1;
|
|
||||||
load data infile '../../std_data/loaddata1.dat' into table t1 fields terminated by ',' LINES STARTING BY ',' (b,c,d);
|
|
||||||
sync_slave_with_master;
|
|
||||||
|
|
||||||
connection slave;
|
|
||||||
select * from rewrite.t1;
|
|
||||||
|
|
||||||
connection master;
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a text, b text);
|
|
||||||
load data infile '../../std_data/loaddata2.dat' into table t1 fields terminated by ',' enclosed by '''';
|
|
||||||
sync_slave_with_master;
|
|
||||||
|
|
||||||
connection slave;
|
|
||||||
select concat('|',a,'|'), concat('|',b,'|') from rewrite.t1;
|
|
||||||
|
|
||||||
connection master;
|
|
||||||
drop table t1;
|
|
||||||
create table t1 (a int, b char(10));
|
|
||||||
load data infile '../../std_data/loaddata3.dat' into table t1 fields terminated by '' enclosed by '' ignore 1 lines;
|
|
||||||
sync_slave_with_master;
|
|
||||||
|
|
||||||
connection slave;
|
|
||||||
select * from rewrite.t1;
|
|
||||||
|
|
||||||
connection master;
|
|
||||||
truncate table t1;
|
|
||||||
load data infile '../../std_data/loaddata4.dat' into table t1 fields terminated by '' enclosed by '' lines terminated by '' ignore 1 lines;
|
|
||||||
sync_slave_with_master;
|
|
||||||
|
|
||||||
connection slave;
|
|
||||||
# The empty line last comes from the end line field in the file
|
|
||||||
select * from rewrite.t1;
|
|
||||||
|
|
||||||
drop database rewrite;
|
|
||||||
|
|
||||||
connection master;
|
|
||||||
drop table t1;
|
|
||||||
|
|
@ -82,6 +82,14 @@ grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1;
|
|||||||
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
|
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
|
||||||
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
|
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
|
||||||
|
|
||||||
|
# ToDo: BUG#14931: There is a race between the last grant binlogging, and
|
||||||
|
# the binlogging in the new connection made below, causing sporadic test
|
||||||
|
# failures due to switched statement order in binlog. To fix this we do
|
||||||
|
# SELECT 1 in the first connection before starting the second, ensuring
|
||||||
|
# that binlogging is done in the expected order.
|
||||||
|
# Please remove this SELECT 1 when BUG#14931 is fixed.
|
||||||
|
SELECT 1;
|
||||||
|
|
||||||
connect (con1,127.0.0.1,zedjzlcsjhd,,mysqltest1,$MASTER_MYPORT,);
|
connect (con1,127.0.0.1,zedjzlcsjhd,,mysqltest1,$MASTER_MYPORT,);
|
||||||
connection con1;
|
connection con1;
|
||||||
|
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
--default-time-zone=Europe/Moscow
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
|||||||
# row-based and statement binlog difference in result files
|
|
||||||
-- source include/have_binlog_format_row.inc
|
|
||||||
-- source extra/rpl_tests/rpl_user_variables.test
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
# NYI - row-based cannot use CREATE ... SELECT
|
|
||||||
--source include/have_binlog_format_row.inc
|
|
||||||
|
|
||||||
source include/master-slave.inc;
|
|
||||||
--disable_warnings
|
|
||||||
drop table if exists t1,v1;
|
|
||||||
drop view if exists t1,v1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
#
|
|
||||||
# Check that createion drop of view is replicated, also check replication of
|
|
||||||
# updating of view
|
|
||||||
#
|
|
||||||
connection master;
|
|
||||||
create table t1 (a int);
|
|
||||||
insert into t1 values (1);
|
|
||||||
create view v1 as select a from t1;
|
|
||||||
insert into v1 values (2);
|
|
||||||
select * from v1 order by a;
|
|
||||||
sync_slave_with_master;
|
|
||||||
# view already have to be on slave
|
|
||||||
select * from v1 order by a;
|
|
||||||
connection master;
|
|
||||||
update v1 set a=3 where a=1;
|
|
||||||
select * from v1 order by a;
|
|
||||||
sync_slave_with_master;
|
|
||||||
select * from v1 order by a;
|
|
||||||
connection master;
|
|
||||||
delete from v1 where a=2;
|
|
||||||
select * from v1 order by a;
|
|
||||||
sync_slave_with_master;
|
|
||||||
select * from v1 order by a;
|
|
||||||
connection master;
|
|
||||||
# 'alter view' internally maped to creation, but still check that it works
|
|
||||||
alter view v1 as select a as b from t1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
select * from v1 order by 1;
|
|
||||||
connection master;
|
|
||||||
drop view v1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
#error, because view have to be removed from slave
|
|
||||||
-- error 1146
|
|
||||||
select * from v1 order by a;
|
|
||||||
connection master;
|
|
||||||
drop table t1;
|
|
||||||
sync_slave_with_master;
|
|
@ -1,35 +0,0 @@
|
|||||||
######################## rpl_ddl.test ########################
|
|
||||||
# #
|
|
||||||
# DDL statements (sometimes with implicit COMMIT) executed #
|
|
||||||
# by the master and it's propagation into the slave #
|
|
||||||
# #
|
|
||||||
##############################################################
|
|
||||||
|
|
||||||
#
|
|
||||||
# NOTE, PLEASE BE CAREFUL, WHEN MODIFYING THE TESTS !!
|
|
||||||
#
|
|
||||||
# 1. !All! objects to be dropped, renamed, altered ... must be created
|
|
||||||
# in AUTOCOMMIT= 1 mode before AUTOCOMMIT is set to 0 and the test
|
|
||||||
# sequences start.
|
|
||||||
#
|
|
||||||
# 2. Never use a test object, which was direct or indirect affected by a
|
|
||||||
# preceeding test sequence again.
|
|
||||||
# Except table d1.t1 where ONLY DML is allowed.
|
|
||||||
#
|
|
||||||
# If one preceeding test sequence hits a (sometimes not good visible,
|
|
||||||
# because the sql error code of the statement might be 0) bug
|
|
||||||
# and these rules are ignored, a following test sequence might earn ugly
|
|
||||||
# effects like failing 'sync_slave_with_master', crashes of the slave or
|
|
||||||
# abort of the test case etc..
|
|
||||||
#
|
|
||||||
# 3. The assignment of the DDL command to be tested to $my_stmt can
|
|
||||||
# be a bit difficult. "'" must be avoided, because the test
|
|
||||||
# routine "include/rpl_stmt_seq.inc" performs a
|
|
||||||
# eval SELECT CONCAT('######## ','$my_stmt',' ########') as "";
|
|
||||||
#
|
|
||||||
|
|
||||||
--source include/have_innodb.inc
|
|
||||||
--source include/have_binlog_format_statement.inc
|
|
||||||
--source include/master-slave.inc
|
|
||||||
let $engine_type= "InnoDB";
|
|
||||||
-- source extra/rpl_tests/rpl_ddl.test
|
|
@ -1,8 +0,0 @@
|
|||||||
# Test for
|
|
||||||
# Bug #797: If a query is ignored on slave (replicate-ignore-table) the slave
|
|
||||||
# still checks that it has the same error as on the master.
|
|
||||||
|
|
||||||
# Requires statement logging
|
|
||||||
-- source include/have_binlog_format_statement.inc
|
|
||||||
-- source extra/rpl_tests/rpl_err_ignoredtable.test
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
|||||||
# See if the master logs LOAD DATA INFILE correctly when binlog_*_db rules
|
|
||||||
# exist.
|
|
||||||
# This is for BUG#1100 (LOAD DATA INFILE was half-logged).
|
|
||||||
|
|
||||||
# Requires statement logging
|
|
||||||
-- source include/have_binlog_format_statement.inc
|
|
||||||
-- source extra/rpl_tests/rpl_loaddata_m.test
|
|
||||||
|
|
||||||
# End of 4.1 tests
|
|
||||||
# Adding comment for force manual merge 5.0 -> wl1012: Delete me
|
|
@ -1 +0,0 @@
|
|||||||
"--replicate-rewrite-db=test->rewrite" "--replicate-rewrite-db=mysqltest1->test"
|
|
@ -90,6 +90,14 @@ grant CREATE ROUTINE, EXECUTE on mysqltest1.* to "zedjzlcsjhd"@127.0.0.1;
|
|||||||
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
|
grant SELECT on mysqltest1.t1 to "zedjzlcsjhd"@127.0.0.1;
|
||||||
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
|
grant SELECT, INSERT on mysqltest1.t2 to "zedjzlcsjhd"@127.0.0.1;
|
||||||
|
|
||||||
|
# ToDo: BUG#14931: There is a race between the last grant binlogging, and
|
||||||
|
# the binlogging in the new connection made below, causing sporadic test
|
||||||
|
# failures due to switched statement order in binlog. To fix this we do
|
||||||
|
# SELECT 1 in the first connection before starting the second, ensuring
|
||||||
|
# that binlogging is done in the expected order.
|
||||||
|
# Please remove this SELECT 1 when BUG#14931 is fixed.
|
||||||
|
SELECT 1;
|
||||||
|
|
||||||
connect (con1,127.0.0.1,zedjzlcsjhd,,mysqltest1,$MASTER_MYPORT,);
|
connect (con1,127.0.0.1,zedjzlcsjhd,,mysqltest1,$MASTER_MYPORT,);
|
||||||
connection con1;
|
connection con1;
|
||||||
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
--default-time-zone=Europe/Moscow
|
|
@ -1,129 +0,0 @@
|
|||||||
# TBF - difference in row level logging
|
|
||||||
-- source include/have_binlog_format_statement.inc
|
|
||||||
|
|
||||||
# Test of replication of time zones.
|
|
||||||
|
|
||||||
# There is currently some bug possibly in prepared statements (this
|
|
||||||
# test fails with --ps-protocol): sys_var_thd_time_zone::value_ptr()
|
|
||||||
# is called only at prepare time, not at execution time. So,
|
|
||||||
# thd->time_zone_used is not equal to 1 (it is back to 0, because of
|
|
||||||
# reset_thd_for_next_command called at execution time), so the
|
|
||||||
# timezone used in CONVERT_TZ is not binlogged. To debug (by Guilhem
|
|
||||||
# and possibly Konstantin).
|
|
||||||
|
|
||||||
--disable_ps_protocol
|
|
||||||
|
|
||||||
source include/master-slave.inc;
|
|
||||||
|
|
||||||
# Some preparations
|
|
||||||
let $VERSION=`select version()`;
|
|
||||||
set timestamp=100000000; # for fixed output of mysqlbinlog
|
|
||||||
create table t1 (t timestamp);
|
|
||||||
create table t2 (t char(32));
|
|
||||||
|
|
||||||
connection slave;
|
|
||||||
select @@time_zone;
|
|
||||||
|
|
||||||
#
|
|
||||||
# Let us check how well replication works when we are saving datetime
|
|
||||||
# value in TIMESTAMP field.
|
|
||||||
#
|
|
||||||
connection master;
|
|
||||||
select @@time_zone;
|
|
||||||
insert into t1 values ('20050101000000'), ('20050611093902');
|
|
||||||
set time_zone='UTC';
|
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
|
||||||
select * from t1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
set time_zone='UTC';
|
|
||||||
select * from t1;
|
|
||||||
|
|
||||||
# Let us check also that setting of time_zone back to default also works
|
|
||||||
# well
|
|
||||||
connection master;
|
|
||||||
delete from t1;
|
|
||||||
set time_zone='Europe/Moscow';
|
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
|
||||||
select * from t1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
set time_zone='Europe/Moscow';
|
|
||||||
select * from t1;
|
|
||||||
connection master;
|
|
||||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
|
||||||
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
|
||||||
|
|
||||||
# Let us check with LOAD DATA INFILE
|
|
||||||
# (we do it after mysqlbinlog because the temp files names are not constant)
|
|
||||||
connection master;
|
|
||||||
delete from t1;
|
|
||||||
set time_zone='UTC';
|
|
||||||
load data infile '../../std_data/rpl_timezone.dat' into table t1;
|
|
||||||
select * from t1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
set time_zone='UTC';
|
|
||||||
select * from t1;
|
|
||||||
set time_zone='Europe/Moscow';
|
|
||||||
|
|
||||||
# Put back values of before the LOAD
|
|
||||||
connection master;
|
|
||||||
set time_zone='Europe/Moscow';
|
|
||||||
delete from t1;
|
|
||||||
insert into t1 values ('20040101000000'), ('20040611093902');
|
|
||||||
|
|
||||||
#
|
|
||||||
# Now let us check how well we replicate statments reading TIMESTAMP fields
|
|
||||||
# (We should see the same data on master and on slave but it should differ
|
|
||||||
# from originally inserted)
|
|
||||||
#
|
|
||||||
set time_zone='MET';
|
|
||||||
insert into t2 (select t from t1);
|
|
||||||
select * from t1;
|
|
||||||
sync_slave_with_master;
|
|
||||||
select * from t2;
|
|
||||||
|
|
||||||
#
|
|
||||||
# Now let us check how well we replicate various CURRENT_* functions
|
|
||||||
#
|
|
||||||
connection master;
|
|
||||||
delete from t2;
|
|
||||||
set timestamp=1000072000;
|
|
||||||
insert into t2 values (current_timestamp), (current_date), (current_time);
|
|
||||||
sync_slave_with_master;
|
|
||||||
select * from t2;
|
|
||||||
|
|
||||||
#
|
|
||||||
# At last let us check replication of FROM_UNIXTIME/UNIX_TIMESTAMP functions.
|
|
||||||
#
|
|
||||||
connection master;
|
|
||||||
delete from t2;
|
|
||||||
insert into t2 values (from_unixtime(1000000000)),
|
|
||||||
(unix_timestamp('2001-09-09 03:46:40'));
|
|
||||||
select * from t2;
|
|
||||||
sync_slave_with_master;
|
|
||||||
# We should get same result on slave as on master
|
|
||||||
select * from t2;
|
|
||||||
|
|
||||||
#
|
|
||||||
# Let us check that we are allowing to set global time_zone with
|
|
||||||
# replication
|
|
||||||
#
|
|
||||||
connection master;
|
|
||||||
set global time_zone='MET';
|
|
||||||
|
|
||||||
#
|
|
||||||
# Let us see if CONVERT_TZ(@@time_zone) replicates
|
|
||||||
#
|
|
||||||
delete from t2;
|
|
||||||
set time_zone='UTC';
|
|
||||||
insert into t2 values(convert_tz('2004-01-01 00:00:00','MET',@@time_zone));
|
|
||||||
insert into t2 values(convert_tz('2005-01-01 00:00:00','MET','Japan'));
|
|
||||||
select * from t2;
|
|
||||||
sync_slave_with_master;
|
|
||||||
select * from t2;
|
|
||||||
|
|
||||||
# Clean up
|
|
||||||
connection master;
|
|
||||||
drop table t1, t2;
|
|
||||||
sync_slave_with_master;
|
|
||||||
|
|
||||||
# End of 4.1 tests
|
|
@ -1,5 +0,0 @@
|
|||||||
# row-based and statement binlog difference in result files
|
|
||||||
-- source include/have_binlog_format_statement.inc
|
|
||||||
-- source extra/rpl_tests/rpl_user_variables.test
|
|
||||||
|
|
||||||
# End of 4.1 tests
|
|
@ -1,6 +1,3 @@
|
|||||||
# TBF - difference in row level logging
|
|
||||||
-- source include/have_binlog_format_row.inc
|
|
||||||
|
|
||||||
# Test of replication of time zones.
|
# Test of replication of time zones.
|
||||||
|
|
||||||
# There is currently some bug possibly in prepared statements (this
|
# There is currently some bug possibly in prepared statements (this
|
||||||
@ -51,8 +48,11 @@ sync_slave_with_master;
|
|||||||
set time_zone='Europe/Moscow';
|
set time_zone='Europe/Moscow';
|
||||||
select * from t1;
|
select * from t1;
|
||||||
connection master;
|
connection master;
|
||||||
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
# Change Author: JBM
|
||||||
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
# Change Date: 2005-12-22
|
||||||
|
# Change: Comment out the exec of the binlog so test works for both SBR and RBR
|
||||||
|
#--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
||||||
|
#--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
||||||
|
|
||||||
# Let us check with LOAD DATA INFILE
|
# Let us check with LOAD DATA INFILE
|
||||||
# (we do it after mysqlbinlog because the temp files names are not constant)
|
# (we do it after mysqlbinlog because the temp files names are not constant)
|
||||||
@ -74,7 +74,7 @@ insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL);
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Now let us check how well we replicate statments reading TIMESTAMP fields
|
# Now let us check how well we replicate statments reading TIMESTAMP fields
|
||||||
# (We should see the same data on master and on slave but it should differ
|
# (We should see the same data on master and on slave but it should differ
|
||||||
# from originally inserted)
|
# from originally inserted)
|
||||||
#
|
#
|
||||||
set time_zone='MET';
|
set time_zone='MET';
|
||||||
@ -127,3 +127,4 @@ select * from t2;
|
|||||||
connection master;
|
connection master;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
@ -1,4 +1,3 @@
|
|||||||
# row-based and statement binlog difference in result files
|
|
||||||
#
|
#
|
||||||
# Test of replicating user variables
|
# Test of replicating user variables
|
||||||
#
|
#
|
@ -1,5 +1,4 @@
|
|||||||
# NYI - row-based cannot use CREATE ... SELECT
|
# NYI - row-based cannot use CREATE ... SELECT
|
||||||
--source include/have_binlog_format_statement.inc
|
|
||||||
|
|
||||||
source include/master-slave.inc;
|
source include/master-slave.inc;
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
@ -10,7 +9,7 @@ reset master;
|
|||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check that createion drop of view is replicated, also check replication of
|
# Check that creation drop of view is replicated, also check replication of
|
||||||
# updating of view
|
# updating of view
|
||||||
#
|
#
|
||||||
connection master;
|
connection master;
|
||||||
@ -46,5 +45,8 @@ select * from v1 order by a;
|
|||||||
connection master;
|
connection master;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
--replace_column 2 # 5 #
|
# Change Author: JBM
|
||||||
show binlog events limit 1,100;
|
# Change Date: 2005-12-22
|
||||||
|
# Change: Commented out binlog events to work with SBR and RBR
|
||||||
|
#--replace_column 2 # 5 #
|
||||||
|
# show binlog events limit 1,100;
|
@ -930,11 +930,8 @@ drop table t1, t2, t3;
|
|||||||
# operator.
|
# operator.
|
||||||
#
|
#
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
--disable_warnings
|
|
||||||
drop procedure if exists p2;
|
|
||||||
--enable_warnings
|
|
||||||
DELIMITER //;
|
DELIMITER //;
|
||||||
CREATE PROCEDURE `p2`()
|
CREATE PROCEDURE `p1`()
|
||||||
begin
|
begin
|
||||||
insert into t1 values (1);
|
insert into t1 values (1);
|
||||||
end//
|
end//
|
||||||
@ -944,8 +941,8 @@ begin
|
|||||||
set done= not done;
|
set done= not done;
|
||||||
end//
|
end//
|
||||||
DELIMITER ;//
|
DELIMITER ;//
|
||||||
CALL p2();
|
CALL p1();
|
||||||
drop procedure p2;
|
drop procedure p1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -2279,6 +2279,7 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
create table t1(f1 int, f2 int);
|
create table t1(f1 int, f2 int);
|
||||||
insert into t1 values (null, 10), (null,2);
|
insert into t1 values (null, 10), (null,2);
|
||||||
|
select f1, sum(f2) from t1 group by f1;
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
select f1, sum(f2) from v1 group by f1;
|
select f1, sum(f2) from v1 group by f1;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
|
60
mysys/hash.c
60
mysys/hash.c
@ -36,9 +36,10 @@ typedef struct st_hash_info {
|
|||||||
|
|
||||||
static uint hash_mask(uint hashnr,uint buffmax,uint maxlength);
|
static uint hash_mask(uint hashnr,uint buffmax,uint maxlength);
|
||||||
static void movelink(HASH_LINK *array,uint pos,uint next_link,uint newlink);
|
static void movelink(HASH_LINK *array,uint pos,uint next_link,uint newlink);
|
||||||
static int hashcmp(HASH *hash,HASH_LINK *pos,const byte *key,uint length);
|
static int hashcmp(const HASH *hash, HASH_LINK *pos, const byte *key,
|
||||||
|
uint length);
|
||||||
|
|
||||||
static uint calc_hash(HASH *hash,const byte *key,uint length)
|
static uint calc_hash(const HASH *hash, const byte *key, uint length)
|
||||||
{
|
{
|
||||||
ulong nr1=1, nr2=4;
|
ulong nr1=1, nr2=4;
|
||||||
hash->charset->coll->hash_sort(hash->charset,(uchar*) key,length,&nr1,&nr2);
|
hash->charset->coll->hash_sort(hash->charset,(uchar*) key,length,&nr1,&nr2);
|
||||||
@ -63,7 +64,6 @@ _hash_init(HASH *hash,CHARSET_INFO *charset,
|
|||||||
hash->key_offset=key_offset;
|
hash->key_offset=key_offset;
|
||||||
hash->key_length=key_length;
|
hash->key_length=key_length;
|
||||||
hash->blength=1;
|
hash->blength=1;
|
||||||
hash->current_record= NO_RECORD; /* For the future */
|
|
||||||
hash->get_key=get_key;
|
hash->get_key=get_key;
|
||||||
hash->free=free_element;
|
hash->free=free_element;
|
||||||
hash->flags=flags;
|
hash->flags=flags;
|
||||||
@ -135,7 +135,6 @@ void my_hash_reset(HASH *hash)
|
|||||||
reset_dynamic(&hash->array);
|
reset_dynamic(&hash->array);
|
||||||
/* Set row pointers so that the hash can be reused at once */
|
/* Set row pointers so that the hash can be reused at once */
|
||||||
hash->blength= 1;
|
hash->blength= 1;
|
||||||
hash->current_record= NO_RECORD;
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,7 +146,8 @@ void my_hash_reset(HASH *hash)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
static inline char*
|
static inline char*
|
||||||
hash_key(HASH *hash,const byte *record,uint *length,my_bool first)
|
hash_key(const HASH *hash, const byte *record, uint *length,
|
||||||
|
my_bool first)
|
||||||
{
|
{
|
||||||
if (hash->get_key)
|
if (hash->get_key)
|
||||||
return (*hash->get_key)(record,length,first);
|
return (*hash->get_key)(record,length,first);
|
||||||
@ -163,8 +163,8 @@ static uint hash_mask(uint hashnr,uint buffmax,uint maxlength)
|
|||||||
return (hashnr & ((buffmax >> 1) -1));
|
return (hashnr & ((buffmax >> 1) -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint hash_rec_mask(HASH *hash,HASH_LINK *pos,uint buffmax,
|
static uint hash_rec_mask(const HASH *hash, HASH_LINK *pos,
|
||||||
uint maxlength)
|
uint buffmax, uint maxlength)
|
||||||
{
|
{
|
||||||
uint length;
|
uint length;
|
||||||
byte *key= (byte*) hash_key(hash,pos->data,&length,0);
|
byte *key= (byte*) hash_key(hash,pos->data,&length,0);
|
||||||
@ -186,14 +186,25 @@ unsigned int rec_hashnr(HASH *hash,const byte *record)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Search after a record based on a key */
|
gptr hash_search(const HASH *hash, const byte *key, uint length)
|
||||||
/* Sets info->current_ptr to found record */
|
{
|
||||||
|
HASH_SEARCH_STATE state;
|
||||||
|
return hash_first(hash, key, length, &state);
|
||||||
|
}
|
||||||
|
|
||||||
gptr hash_search(HASH *hash,const byte *key,uint length)
|
/*
|
||||||
|
Search after a record based on a key
|
||||||
|
|
||||||
|
NOTE
|
||||||
|
Assigns the number of the found record to HASH_SEARCH_STATE state
|
||||||
|
*/
|
||||||
|
|
||||||
|
gptr hash_first(const HASH *hash, const byte *key, uint length,
|
||||||
|
HASH_SEARCH_STATE *current_record)
|
||||||
{
|
{
|
||||||
HASH_LINK *pos;
|
HASH_LINK *pos;
|
||||||
uint flag,idx;
|
uint flag,idx;
|
||||||
DBUG_ENTER("hash_search");
|
DBUG_ENTER("hash_first");
|
||||||
|
|
||||||
flag=1;
|
flag=1;
|
||||||
if (hash->records)
|
if (hash->records)
|
||||||
@ -206,7 +217,7 @@ gptr hash_search(HASH *hash,const byte *key,uint length)
|
|||||||
if (!hashcmp(hash,pos,key,length))
|
if (!hashcmp(hash,pos,key,length))
|
||||||
{
|
{
|
||||||
DBUG_PRINT("exit",("found key at %d",idx));
|
DBUG_PRINT("exit",("found key at %d",idx));
|
||||||
hash->current_record= idx;
|
*current_record= idx;
|
||||||
DBUG_RETURN (pos->data);
|
DBUG_RETURN (pos->data);
|
||||||
}
|
}
|
||||||
if (flag)
|
if (flag)
|
||||||
@ -218,31 +229,32 @@ gptr hash_search(HASH *hash,const byte *key,uint length)
|
|||||||
}
|
}
|
||||||
while ((idx=pos->next) != NO_RECORD);
|
while ((idx=pos->next) != NO_RECORD);
|
||||||
}
|
}
|
||||||
hash->current_record= NO_RECORD;
|
*current_record= NO_RECORD;
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get next record with identical key */
|
/* Get next record with identical key */
|
||||||
/* Can only be called if previous calls was hash_search */
|
/* Can only be called if previous calls was hash_search */
|
||||||
|
|
||||||
gptr hash_next(HASH *hash,const byte *key,uint length)
|
gptr hash_next(const HASH *hash, const byte *key, uint length,
|
||||||
|
HASH_SEARCH_STATE *current_record)
|
||||||
{
|
{
|
||||||
HASH_LINK *pos;
|
HASH_LINK *pos;
|
||||||
uint idx;
|
uint idx;
|
||||||
|
|
||||||
if (hash->current_record != NO_RECORD)
|
if (*current_record != NO_RECORD)
|
||||||
{
|
{
|
||||||
HASH_LINK *data=dynamic_element(&hash->array,0,HASH_LINK*);
|
HASH_LINK *data=dynamic_element(&hash->array,0,HASH_LINK*);
|
||||||
for (idx=data[hash->current_record].next; idx != NO_RECORD ; idx=pos->next)
|
for (idx=data[*current_record].next; idx != NO_RECORD ; idx=pos->next)
|
||||||
{
|
{
|
||||||
pos=data+idx;
|
pos=data+idx;
|
||||||
if (!hashcmp(hash,pos,key,length))
|
if (!hashcmp(hash,pos,key,length))
|
||||||
{
|
{
|
||||||
hash->current_record= idx;
|
*current_record= idx;
|
||||||
return pos->data;
|
return pos->data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hash->current_record=NO_RECORD;
|
*current_record= NO_RECORD;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -281,7 +293,8 @@ static void movelink(HASH_LINK *array,uint find,uint next_link,uint newlink)
|
|||||||
!= 0 key of record != key
|
!= 0 key of record != key
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int hashcmp(HASH *hash,HASH_LINK *pos,const byte *key,uint length)
|
static int hashcmp(const HASH *hash, HASH_LINK *pos, const byte *key,
|
||||||
|
uint length)
|
||||||
{
|
{
|
||||||
uint rec_keylength;
|
uint rec_keylength;
|
||||||
byte *rec_key= (byte*) hash_key(hash,pos->data,&rec_keylength,1);
|
byte *rec_key= (byte*) hash_key(hash,pos->data,&rec_keylength,1);
|
||||||
@ -307,7 +320,6 @@ my_bool my_hash_insert(HASH *info,const byte *record)
|
|||||||
if (!(empty=(HASH_LINK*) alloc_dynamic(&info->array)))
|
if (!(empty=(HASH_LINK*) alloc_dynamic(&info->array)))
|
||||||
return(TRUE); /* No more memory */
|
return(TRUE); /* No more memory */
|
||||||
|
|
||||||
info->current_record= NO_RECORD;
|
|
||||||
data=dynamic_element(&info->array,0,HASH_LINK*);
|
data=dynamic_element(&info->array,0,HASH_LINK*);
|
||||||
halfbuff= info->blength >> 1;
|
halfbuff= info->blength >> 1;
|
||||||
|
|
||||||
@ -450,7 +462,6 @@ my_bool hash_delete(HASH *hash,byte *record)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( --(hash->records) < hash->blength >> 1) hash->blength>>=1;
|
if ( --(hash->records) < hash->blength >> 1) hash->blength>>=1;
|
||||||
hash->current_record= NO_RECORD;
|
|
||||||
lastpos=data+hash->records;
|
lastpos=data+hash->records;
|
||||||
|
|
||||||
/* Remove link to record */
|
/* Remove link to record */
|
||||||
@ -543,7 +554,6 @@ my_bool hash_update(HASH *hash,byte *record,byte *old_key,uint old_key_length)
|
|||||||
if ((idx=pos->next) == NO_RECORD)
|
if ((idx=pos->next) == NO_RECORD)
|
||||||
DBUG_RETURN(1); /* Not found in links */
|
DBUG_RETURN(1); /* Not found in links */
|
||||||
}
|
}
|
||||||
hash->current_record= NO_RECORD;
|
|
||||||
org_link= *pos;
|
org_link= *pos;
|
||||||
empty=idx;
|
empty=idx;
|
||||||
|
|
||||||
@ -593,10 +603,10 @@ byte *hash_element(HASH *hash,uint idx)
|
|||||||
isn't changed
|
isn't changed
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void hash_replace(HASH *hash, uint idx, byte *new_row)
|
void hash_replace(HASH *hash, HASH_SEARCH_STATE *current_record, byte *new_row)
|
||||||
{
|
{
|
||||||
if (idx != NO_RECORD) /* Safety */
|
if (*current_record != NO_RECORD) /* Safety */
|
||||||
dynamic_element(&hash->array,idx,HASH_LINK*)->data=new_row;
|
dynamic_element(&hash->array, *current_record, HASH_LINK*)->data= new_row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -75,6 +75,8 @@ gptr my_once_alloc(unsigned int Size, myf MyFlags)
|
|||||||
point= (gptr) ((char*) next+ (next->size-next->left));
|
point= (gptr) ((char*) next+ (next->size-next->left));
|
||||||
next->left-= Size;
|
next->left-= Size;
|
||||||
|
|
||||||
|
if (MyFlags & MY_ZEROFILL)
|
||||||
|
bzero(point, Size);
|
||||||
return(point);
|
return(point);
|
||||||
} /* my_once_alloc */
|
} /* my_once_alloc */
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ static int do_test()
|
|||||||
bzero((char*) key1,sizeof(key1[0])*1000);
|
bzero((char*) key1,sizeof(key1[0])*1000);
|
||||||
|
|
||||||
printf("- Creating hash\n");
|
printf("- Creating hash\n");
|
||||||
if (hash_init(&hash,recant/2,0,6,0,free_record,0))
|
if (hash_init(&hash, default_charset_info, recant/2, 0, 6, 0, free_record, 0))
|
||||||
goto err;
|
goto err;
|
||||||
printf("- Writing records:\n");
|
printf("- Writing records:\n");
|
||||||
|
|
||||||
@ -172,15 +172,16 @@ static int do_test()
|
|||||||
break;
|
break;
|
||||||
if (key1[j] > 1)
|
if (key1[j] > 1)
|
||||||
{
|
{
|
||||||
|
HASH_SEARCH_STATE state;
|
||||||
printf("- Testing identical read\n");
|
printf("- Testing identical read\n");
|
||||||
sprintf(key,"%6d",j);
|
sprintf(key,"%6d",j);
|
||||||
pos=1;
|
pos=1;
|
||||||
if (!(recpos=hash_search(&hash,key,0)))
|
if (!(recpos= hash_first(&hash, key, 0, &state)))
|
||||||
{
|
{
|
||||||
printf("can't find key1: \"%s\"\n",key);
|
printf("can't find key1: \"%s\"\n",key);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
while (hash_next(&hash,key,0) && pos < (ulong) (key1[j]+10))
|
while (hash_next(&hash, key, 0, &state) && pos < (ulong) (key1[j]+10))
|
||||||
pos++;
|
pos++;
|
||||||
if (pos != (ulong) key1[j])
|
if (pos != (ulong) key1[j])
|
||||||
{
|
{
|
||||||
@ -189,7 +190,7 @@ static int do_test()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("- Creating output heap-file 2\n");
|
printf("- Creating output heap-file 2\n");
|
||||||
if (hash_init(&hash2,hash.records,0,0,hash2_key,free_record,0))
|
if (hash_init(&hash2, default_charset_info, hash.records, 0, 0, hash2_key, free_record,0))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
printf("- Copying and removing records\n");
|
printf("- Copying and removing records\n");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
INCLUDES= -I$(top_builddir)/include
|
INCLUDES= -I$(top_builddir)/include
|
||||||
noinst_LTLIBRARIES= libmypluglib.la
|
noinst_LTLIBRARIES= mypluglib.la
|
||||||
libmypluglib_la_SOURCES= plugin_example.c
|
mypluglib_la_SOURCES= plugin_example.c
|
||||||
libmypluglib_la_LDFLAGS= -module
|
mypluglib_la_LDFLAGS= -module -rpath $(pkglibdir)
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
#include <m_ctype.h>
|
#include <m_ctype.h>
|
||||||
#include <plugin.h>
|
#include <plugin.h>
|
||||||
|
|
||||||
|
long number_of_calls= 0; /* for SHOW STATUS, see below */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Simple full-text parser plugin that acts as a replacement for the
|
Simple full-text parser plugin that acts as a replacement for the
|
||||||
built-in full-text parser:
|
built-in full-text parser:
|
||||||
@ -167,6 +169,8 @@ int simple_parser_parse(MYSQL_FTPARSER_PARAM *param)
|
|||||||
{
|
{
|
||||||
char *end, *start, *docend= param->doc + param->length;
|
char *end, *start, *docend= param->doc + param->length;
|
||||||
|
|
||||||
|
number_of_calls++;
|
||||||
|
|
||||||
for (end= start= param->doc;; end++)
|
for (end= start= param->doc;; end++)
|
||||||
{
|
{
|
||||||
if (end == docend)
|
if (end == docend)
|
||||||
@ -198,6 +202,16 @@ static struct st_mysql_ftparser simple_parser_descriptor=
|
|||||||
simple_parser_deinit /* parser deinit function */
|
simple_parser_deinit /* parser deinit function */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Plugin status variables for SHOW STATUS
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct st_mysql_show_var simple_status[]=
|
||||||
|
{
|
||||||
|
{"static", "just a static text", SHOW_CHAR},
|
||||||
|
{"called", (char *)&number_of_calls, SHOW_LONG},
|
||||||
|
{0,0,0}
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Plugin library descriptor
|
Plugin library descriptor
|
||||||
@ -211,6 +225,8 @@ mysql_declare_plugin
|
|||||||
"MySQL AB", /* author */
|
"MySQL AB", /* author */
|
||||||
"Simple Full-Text Parser", /* description */
|
"Simple Full-Text Parser", /* description */
|
||||||
simple_parser_plugin_init, /* init function (when loaded) */
|
simple_parser_plugin_init, /* init function (when loaded) */
|
||||||
simple_parser_plugin_deinit /* deinit function (when unloaded) */
|
simple_parser_plugin_deinit,/* deinit function (when unloaded) */
|
||||||
|
0x0001, /* version */
|
||||||
|
&simple_status /* status variables */
|
||||||
}
|
}
|
||||||
mysql_declare_plugin_end;
|
mysql_declare_plugin_end;
|
||||||
|
@ -229,7 +229,7 @@ then
|
|||||||
c_t="$c_t User char(16) binary DEFAULT '' NOT NULL,"
|
c_t="$c_t User char(16) binary DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t Table_name char(64) binary DEFAULT '' NOT NULL,"
|
c_t="$c_t Table_name char(64) binary DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t Grantor char(77) DEFAULT '' NOT NULL,"
|
c_t="$c_t Grantor char(77) DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t Timestamp timestamp(14),"
|
c_t="$c_t Timestamp timestamp,"
|
||||||
c_t="$c_t Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
c_t="$c_t Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
c_t="$c_t Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
||||||
c_t="$c_t PRIMARY KEY (Host,Db,User,Table_name),"
|
c_t="$c_t PRIMARY KEY (Host,Db,User,Table_name),"
|
||||||
@ -251,7 +251,7 @@ then
|
|||||||
c_c="$c_c User char(16) binary DEFAULT '' NOT NULL,"
|
c_c="$c_c User char(16) binary DEFAULT '' NOT NULL,"
|
||||||
c_c="$c_c Table_name char(64) binary DEFAULT '' NOT NULL,"
|
c_c="$c_c Table_name char(64) binary DEFAULT '' NOT NULL,"
|
||||||
c_c="$c_c Column_name char(64) binary DEFAULT '' NOT NULL,"
|
c_c="$c_c Column_name char(64) binary DEFAULT '' NOT NULL,"
|
||||||
c_c="$c_c Timestamp timestamp(14),"
|
c_c="$c_c Timestamp timestamp,"
|
||||||
c_c="$c_c Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
c_c="$c_c Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
||||||
c_c="$c_c PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
|
c_c="$c_c PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
|
||||||
c_c="$c_c ) engine=MyISAM"
|
c_c="$c_c ) engine=MyISAM"
|
||||||
@ -273,7 +273,7 @@ then
|
|||||||
c_pp="$c_pp Routine_type enum('FUNCTION','PROCEDURE') NOT NULL,"
|
c_pp="$c_pp Routine_type enum('FUNCTION','PROCEDURE') NOT NULL,"
|
||||||
c_pp="$c_pp Grantor char(77) DEFAULT '' NOT NULL,"
|
c_pp="$c_pp Grantor char(77) DEFAULT '' NOT NULL,"
|
||||||
c_pp="$c_pp Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
c_pp="$c_pp Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL,"
|
||||||
c_pp="$c_pp Timestamp timestamp(14),"
|
c_pp="$c_pp Timestamp timestamp,"
|
||||||
c_pp="$c_pp PRIMARY KEY (Host,Db,User,Routine_name,Routine_type),"
|
c_pp="$c_pp PRIMARY KEY (Host,Db,User,Routine_name,Routine_type),"
|
||||||
c_pp="$c_pp KEY Grantor (Grantor)"
|
c_pp="$c_pp KEY Grantor (Grantor)"
|
||||||
c_pp="$c_pp ) engine=MyISAM"
|
c_pp="$c_pp ) engine=MyISAM"
|
||||||
@ -743,7 +743,7 @@ fi
|
|||||||
|
|
||||||
cat << END_OF_DATA
|
cat << END_OF_DATA
|
||||||
use mysql;
|
use mysql;
|
||||||
set table_type=myisam;
|
set storage_engine=myisam;
|
||||||
$c_d
|
$c_d
|
||||||
$i_d
|
$i_d
|
||||||
|
|
||||||
|
@ -447,7 +447,7 @@ All benchmarks takes the following options:
|
|||||||
--create-options=#
|
--create-options=#
|
||||||
Extra argument to all create statements. If you for example want to
|
Extra argument to all create statements. If you for example want to
|
||||||
create all MySQL tables as BDB tables use:
|
create all MySQL tables as BDB tables use:
|
||||||
--create-options=TYPE=BDB
|
--create-options=ENGINE=BDB
|
||||||
|
|
||||||
--database (Default $opt_database)
|
--database (Default $opt_database)
|
||||||
In which database the test tables are created.
|
In which database the test tables are created.
|
||||||
|
@ -174,29 +174,29 @@ sub new
|
|||||||
|
|
||||||
# Some fixes that depends on the environment
|
# Some fixes that depends on the environment
|
||||||
if (defined($main::opt_create_options) &&
|
if (defined($main::opt_create_options) &&
|
||||||
$main::opt_create_options =~ /type=heap/i)
|
$main::opt_create_options =~ /engine=heap/i)
|
||||||
{
|
{
|
||||||
$limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's
|
$limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's
|
||||||
}
|
}
|
||||||
if (defined($main::opt_create_options) &&
|
if (defined($main::opt_create_options) &&
|
||||||
$main::opt_create_options =~ /type=innodb/i)
|
$main::opt_create_options =~ /engine=innodb/i)
|
||||||
{
|
{
|
||||||
$self->{'transactions'} = 1; # Transactions enabled
|
$self->{'transactions'} = 1; # Transactions enabled
|
||||||
}
|
}
|
||||||
if (defined($main::opt_create_options) &&
|
if (defined($main::opt_create_options) &&
|
||||||
$main::opt_create_options =~ /type=ndb/i)
|
$main::opt_create_options =~ /engine=ndb/i)
|
||||||
{
|
{
|
||||||
$self->{'transactions'} = 1; # Transactions enabled
|
$self->{'transactions'} = 1; # Transactions enabled
|
||||||
$limits{'max_columns'} = 90; # Max number of columns in table
|
$limits{'max_columns'} = 90; # Max number of columns in table
|
||||||
$limits{'max_tables'} = 32; # No comments
|
$limits{'max_tables'} = 32; # No comments
|
||||||
}
|
}
|
||||||
if (defined($main::opt_create_options) &&
|
if (defined($main::opt_create_options) &&
|
||||||
$main::opt_create_options =~ /type=bdb/i)
|
$main::opt_create_options =~ /engine=bdb/i)
|
||||||
{
|
{
|
||||||
$self->{'transactions'} = 1; # Transactions enabled
|
$self->{'transactions'} = 1; # Transactions enabled
|
||||||
}
|
}
|
||||||
if (defined($main::opt_create_options) &&
|
if (defined($main::opt_create_options) &&
|
||||||
$main::opt_create_options =~ /type=gemini/i)
|
$main::opt_create_options =~ /engine=gemini/i)
|
||||||
{
|
{
|
||||||
$limits{'working_blobs'} = 0; # Blobs not implemented yet
|
$limits{'working_blobs'} = 0; # Blobs not implemented yet
|
||||||
$limits{'max_tables'} = 500;
|
$limits{'max_tables'} = 500;
|
||||||
|
@ -2607,8 +2607,7 @@ int ha_federated::stash_remote_error()
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("ha_federated::stash_remote_error()");
|
DBUG_ENTER("ha_federated::stash_remote_error()");
|
||||||
remote_error_number= mysql_errno(mysql);
|
remote_error_number= mysql_errno(mysql);
|
||||||
my_snprintf(remote_error_buf, sizeof(remote_error_buf), "%s",
|
strmake(remote_error_buf, mysql_error(mysql), sizeof(remote_error_buf)-1);
|
||||||
mysql_error(mysql));
|
|
||||||
DBUG_RETURN(HA_FEDERATED_ERROR_WITH_REMOTE_SYSTEM);
|
DBUG_RETURN(HA_FEDERATED_ERROR_WITH_REMOTE_SYSTEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -253,7 +253,7 @@ innobase_commit_low(
|
|||||||
/*================*/
|
/*================*/
|
||||||
trx_t* trx); /* in: transaction handle */
|
trx_t* trx); /* in: transaction handle */
|
||||||
|
|
||||||
struct show_var_st innodb_status_variables[]= {
|
SHOW_VAR innodb_status_variables[]= {
|
||||||
{"buffer_pool_pages_data",
|
{"buffer_pool_pages_data",
|
||||||
(char*) &export_vars.innodb_buffer_pool_pages_data, SHOW_LONG},
|
(char*) &export_vars.innodb_buffer_pool_pages_data, SHOW_LONG},
|
||||||
{"buffer_pool_pages_dirty",
|
{"buffer_pool_pages_dirty",
|
||||||
|
@ -212,7 +212,7 @@ class ha_innobase: public handler
|
|||||||
uint table_changes);
|
uint table_changes);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct show_var_st innodb_status_variables[];
|
extern SHOW_VAR innodb_status_variables[];
|
||||||
extern uint innobase_init_flags, innobase_lock_type;
|
extern uint innobase_init_flags, innobase_lock_type;
|
||||||
extern uint innobase_flush_log_at_trx_commit;
|
extern uint innobase_flush_log_at_trx_commit;
|
||||||
extern ulong innobase_cache_size, innobase_fast_shutdown;
|
extern ulong innobase_cache_size, innobase_fast_shutdown;
|
||||||
@ -277,7 +277,6 @@ void innobase_store_binlog_offset_and_flush_log(char *binlog_name,longlong offse
|
|||||||
|
|
||||||
void innobase_drop_database(char *path);
|
void innobase_drop_database(char *path);
|
||||||
bool innobase_show_status(THD* thd, stat_print_fn*, enum ha_stat_type);
|
bool innobase_show_status(THD* thd, stat_print_fn*, enum ha_stat_type);
|
||||||
int innodb_export_status(void);
|
|
||||||
|
|
||||||
int innobase_release_temporary_latches(THD *thd);
|
int innobase_release_temporary_latches(THD *thd);
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ static int update_status_variables(Ndb_cluster_connection *c)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct show_var_st ndb_status_variables[]= {
|
SHOW_VAR ndb_status_variables[]= {
|
||||||
{"cluster_node_id", (char*) &ndb_cluster_node_id, SHOW_LONG},
|
{"cluster_node_id", (char*) &ndb_cluster_node_id, SHOW_LONG},
|
||||||
{"connected_host", (char*) &ndb_connected_host, SHOW_CHAR_PTR},
|
{"connected_host", (char*) &ndb_connected_host, SHOW_CHAR_PTR},
|
||||||
{"connected_port", (char*) &ndb_connected_port, SHOW_LONG},
|
{"connected_port", (char*) &ndb_connected_port, SHOW_LONG},
|
||||||
@ -370,7 +370,8 @@ Thd_ndb::~Thd_ndb()
|
|||||||
if (ndb)
|
if (ndb)
|
||||||
{
|
{
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
Ndb::Free_list_usage tmp; tmp.m_name= 0;
|
Ndb::Free_list_usage tmp;
|
||||||
|
tmp.m_name= 0;
|
||||||
while (ndb->get_free_list_usage(&tmp))
|
while (ndb->get_free_list_usage(&tmp))
|
||||||
{
|
{
|
||||||
uint leaked= (uint) tmp.m_created - tmp.m_free;
|
uint leaked= (uint) tmp.m_created - tmp.m_free;
|
||||||
@ -382,8 +383,8 @@ Thd_ndb::~Thd_ndb()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
delete ndb;
|
delete ndb;
|
||||||
|
ndb= NULL;
|
||||||
}
|
}
|
||||||
ndb= NULL;
|
|
||||||
changed_tables.empty();
|
changed_tables.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3359,6 +3360,10 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
|||||||
if (lock_type != F_UNLCK)
|
if (lock_type != F_UNLCK)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("lock_type != F_UNLCK"));
|
DBUG_PRINT("info", ("lock_type != F_UNLCK"));
|
||||||
|
if (!thd->transaction.on)
|
||||||
|
m_transaction_on= FALSE;
|
||||||
|
else
|
||||||
|
m_transaction_on= thd->variables.ndb_use_transactions;
|
||||||
if (!thd_ndb->lock_count++)
|
if (!thd_ndb->lock_count++)
|
||||||
{
|
{
|
||||||
PRINT_OPTION_FLAGS(thd);
|
PRINT_OPTION_FLAGS(thd);
|
||||||
@ -3373,7 +3378,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
|||||||
ERR_RETURN(ndb->getNdbError());
|
ERR_RETURN(ndb->getNdbError());
|
||||||
no_uncommitted_rows_reset(thd);
|
no_uncommitted_rows_reset(thd);
|
||||||
thd_ndb->stmt= trans;
|
thd_ndb->stmt= trans;
|
||||||
trans_register_ha(thd, FALSE, &ndbcluster_hton);
|
if (m_transaction_on)
|
||||||
|
trans_register_ha(thd, FALSE, &ndbcluster_hton);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3388,7 +3394,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
|||||||
ERR_RETURN(ndb->getNdbError());
|
ERR_RETURN(ndb->getNdbError());
|
||||||
no_uncommitted_rows_reset(thd);
|
no_uncommitted_rows_reset(thd);
|
||||||
thd_ndb->all= trans;
|
thd_ndb->all= trans;
|
||||||
trans_register_ha(thd, TRUE, &ndbcluster_hton);
|
if (m_transaction_on)
|
||||||
|
trans_register_ha(thd, TRUE, &ndbcluster_hton);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If this is the start of a LOCK TABLE, a table look
|
If this is the start of a LOCK TABLE, a table look
|
||||||
@ -3422,10 +3429,6 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
|||||||
m_ha_not_exact_count= !thd->variables.ndb_use_exact_count;
|
m_ha_not_exact_count= !thd->variables.ndb_use_exact_count;
|
||||||
m_autoincrement_prefetch=
|
m_autoincrement_prefetch=
|
||||||
(ha_rows) thd->variables.ndb_autoincrement_prefetch_sz;
|
(ha_rows) thd->variables.ndb_autoincrement_prefetch_sz;
|
||||||
if (!thd->transaction.on)
|
|
||||||
m_transaction_on= FALSE;
|
|
||||||
else
|
|
||||||
m_transaction_on= thd->variables.ndb_use_transactions;
|
|
||||||
|
|
||||||
m_active_trans= thd_ndb->all ? thd_ndb->all : thd_ndb->stmt;
|
m_active_trans= thd_ndb->all ? thd_ndb->all : thd_ndb->stmt;
|
||||||
DBUG_ASSERT(m_active_trans);
|
DBUG_ASSERT(m_active_trans);
|
||||||
@ -5172,7 +5175,8 @@ int ndbcluster_end(ha_panic_function type)
|
|||||||
if (g_ndb)
|
if (g_ndb)
|
||||||
{
|
{
|
||||||
#ifndef DBUG_OFF
|
#ifndef DBUG_OFF
|
||||||
Ndb::Free_list_usage tmp; tmp.m_name= 0;
|
Ndb::Free_list_usage tmp;
|
||||||
|
tmp.m_name= 0;
|
||||||
while (g_ndb->get_free_list_usage(&tmp))
|
while (g_ndb->get_free_list_usage(&tmp))
|
||||||
{
|
{
|
||||||
uint leaked= (uint) tmp.m_created - tmp.m_free;
|
uint leaked= (uint) tmp.m_created - tmp.m_free;
|
||||||
@ -5184,10 +5188,9 @@ int ndbcluster_end(ha_panic_function type)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
delete g_ndb;
|
delete g_ndb;
|
||||||
|
g_ndb= NULL;
|
||||||
}
|
}
|
||||||
g_ndb= NULL;
|
delete g_ndb_cluster_connection;
|
||||||
if (g_ndb_cluster_connection)
|
|
||||||
delete g_ndb_cluster_connection;
|
|
||||||
g_ndb_cluster_connection= NULL;
|
g_ndb_cluster_connection= NULL;
|
||||||
|
|
||||||
hash_free(&ndbcluster_open_tables);
|
hash_free(&ndbcluster_open_tables);
|
||||||
@ -8075,7 +8078,8 @@ ndbcluster_show_status(THD* thd, stat_print_fn *stat_print,
|
|||||||
if (get_thd_ndb(thd) && get_thd_ndb(thd)->ndb)
|
if (get_thd_ndb(thd) && get_thd_ndb(thd)->ndb)
|
||||||
{
|
{
|
||||||
Ndb* ndb= (get_thd_ndb(thd))->ndb;
|
Ndb* ndb= (get_thd_ndb(thd))->ndb;
|
||||||
Ndb::Free_list_usage tmp; tmp.m_name= 0;
|
Ndb::Free_list_usage tmp;
|
||||||
|
tmp.m_name= 0;
|
||||||
while (ndb->get_free_list_usage(&tmp))
|
while (ndb->get_free_list_usage(&tmp))
|
||||||
{
|
{
|
||||||
uint buflen=
|
uint buflen=
|
||||||
|
@ -769,7 +769,7 @@ private:
|
|||||||
Ndb *get_ndb();
|
Ndb *get_ndb();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct show_var_st ndb_status_variables[];
|
extern SHOW_VAR ndb_status_variables[];
|
||||||
|
|
||||||
bool ndbcluster_init(void);
|
bool ndbcluster_init(void);
|
||||||
int ndbcluster_end(ha_panic_function flag);
|
int ndbcluster_end(ha_panic_function flag);
|
||||||
|
@ -1181,15 +1181,6 @@ int ha_release_temporary_latches(THD *thd)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ha_update_statistics()
|
|
||||||
{
|
|
||||||
#ifdef WITH_INNOBASE_STORAGE_ENGINE
|
|
||||||
innodb_export_status();
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ha_rollback_to_savepoint(THD *thd, SAVEPOINT *sv)
|
int ha_rollback_to_savepoint(THD *thd, SAVEPOINT *sv)
|
||||||
{
|
{
|
||||||
int error=0;
|
int error=0;
|
||||||
@ -2084,7 +2075,8 @@ int ha_enable_transaction(THD *thd, bool on)
|
|||||||
is an optimization hint that storage engine is free to ignore.
|
is an optimization hint that storage engine is free to ignore.
|
||||||
So, let's commit an open transaction (if any) now.
|
So, let's commit an open transaction (if any) now.
|
||||||
*/
|
*/
|
||||||
error= end_trans(thd, COMMIT);
|
if (!(error= ha_commit_stmt(thd)))
|
||||||
|
error= end_trans(thd, COMMIT);
|
||||||
}
|
}
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
@ -2798,16 +2790,22 @@ bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat)
|
|||||||
- Row-based replication is on
|
- Row-based replication is on
|
||||||
- It is not a temporary table
|
- It is not a temporary table
|
||||||
- The binlog is enabled
|
- The binlog is enabled
|
||||||
- The table shall be binlogged (binlog_*_db rules) [Seems disabled /Matz]
|
- The table shall be binlogged (binlog_*_db rules)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_ROW_BASED_REPLICATION
|
#ifdef HAVE_ROW_BASED_REPLICATION
|
||||||
static bool check_table_binlog_row_based(THD *thd, TABLE *table)
|
/* The Sun compiler cannot instantiate the template below if this is
|
||||||
{
|
declared static, but it works by putting it into an anonymous
|
||||||
return
|
namespace. */
|
||||||
binlog_row_based &&
|
namespace {
|
||||||
thd && (thd->options & OPTION_BIN_LOG) &&
|
bool check_table_binlog_row_based(THD *thd, TABLE *table)
|
||||||
(table->s->tmp_table == NO_TMP_TABLE);
|
{
|
||||||
|
return
|
||||||
|
binlog_row_based &&
|
||||||
|
thd && (thd->options & OPTION_BIN_LOG) &&
|
||||||
|
(table->s->tmp_table == NO_TMP_TABLE) &&
|
||||||
|
binlog_filter->db_ok(table->s->db.str);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class RowsEventT> int binlog_log_row(TABLE* table,
|
template<class RowsEventT> int binlog_log_row(TABLE* table,
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user