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[] =
|
||||
{
|
||||
|
||||
{"help", '?', "Display this help and exit.",
|
||||
0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#ifdef __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},
|
||||
@ -683,13 +684,13 @@ static struct my_option my_long_options[] =
|
||||
{"character-sets-dir", OPT_CHARSETS_DIR,
|
||||
"Directory where character sets are.", (gptr*) &charsets_dir,
|
||||
(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
|
||||
{"debug", '#', "Output debug log.", (gptr*) &default_dbug_option,
|
||||
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#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 "
|
||||
"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 "
|
||||
@ -700,13 +701,14 @@ static struct my_option my_long_options[] =
|
||||
{"force-read", 'f', "Force reading unknown binlog events.",
|
||||
(gptr*) &force_opt, (gptr*) &force_opt, 0, GET_BOOL, NO_ARG, 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.",
|
||||
(gptr*) &opt_hexdump, (gptr*) &opt_hexdump, 0, GET_BOOL, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"host", 'h', "Get the binlog from server.", (gptr*) &host, (gptr*) &host,
|
||||
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,
|
||||
0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"password", 'p', "Password to connect to remote server.",
|
||||
@ -722,15 +724,15 @@ static struct my_option my_long_options[] =
|
||||
{"protocol", OPT_MYSQL_PROTOCOL,
|
||||
"The protocol of connection (tcp,socket,pipe,memory).",
|
||||
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",
|
||||
(gptr*) &remote_opt, (gptr*) &remote_opt, 0, GET_BOOL, NO_ARG, 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},
|
||||
{"result-file", 'r', "Direct output to a given file.", 0, 0, 0, GET_STR,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"server-id", OPT_SERVER_ID,
|
||||
"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.",
|
||||
(gptr*) &short_form, (gptr*) &short_form, 0, GET_BOOL, NO_ARG, 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).",
|
||||
(gptr*) &start_datetime_str, (gptr*) &start_datetime_str,
|
||||
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 reading the binlog at first event having a datetime equal or "
|
||||
"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).",
|
||||
(gptr*) &stop_datetime_str, (gptr*) &stop_datetime_str,
|
||||
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 reading the binlog at position N. Applies to the last binlog "
|
||||
"passed on the command line.",
|
||||
(gptr*) &stop_position, (gptr*) &stop_position, 0, GET_ULL,
|
||||
REQUIRED_ARG, (ulonglong)(~(my_off_t)0), BIN_LOG_HEADER_SIZE,
|
||||
(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 \
|
||||
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, \
|
||||
@ -780,11 +777,12 @@ that may lead to an endless loop.",
|
||||
{"user", 'u', "Connect to the remote server as username.",
|
||||
(gptr*) &user, (gptr*) &user, 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},
|
||||
{"version", 'V', "Print version and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 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}
|
||||
};
|
||||
|
||||
|
@ -30,7 +30,9 @@ AC_DEFUN([MYSQL_CHECK_YASSL], [
|
||||
;;
|
||||
esac
|
||||
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
|
||||
yassl_dir=""
|
||||
AC_MSG_RESULT(no)
|
||||
|
@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc)
|
||||
AC_CANONICAL_SYSTEM
|
||||
# The Docs Makefile.am parses this line!
|
||||
# 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)
|
||||
|
||||
PROTOCOL_VERSION=10
|
||||
@ -15,12 +15,6 @@ DOT_FRM_VERSION=6
|
||||
# See the libtool docs for information on how to do shared lib versions.
|
||||
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 ?
|
||||
# Remember that regexps needs to quote [ and ] since this is run through m4
|
||||
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
|
||||
|
||||
# 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
|
||||
DISTCLEANFILES = sched.h $(CLEANFILES)
|
||||
@ -42,6 +42,7 @@ DISTCLEANFILES = sched.h $(CLEANFILES)
|
||||
link_sources:
|
||||
-$(RM) -fr readline
|
||||
@readline_h_ln_cmd@
|
||||
@yassl_h_ln_cmd@
|
||||
|
||||
my_config.h: ../config.h
|
||||
$(CP) ../config.h my_config.h
|
||||
|
@ -22,6 +22,11 @@ functions */
|
||||
#define _WIN32_WINNT 0x0500
|
||||
#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 <windows.h>
|
||||
#include <math.h> /* Because of rint() */
|
||||
@ -341,6 +346,11 @@ inline double ulonglong2double(ulonglong value)
|
||||
#define HAVE_SETFILEPOINTER
|
||||
#define HAVE_VIO_READ_BUFF
|
||||
|
||||
#if defined(_WIN64) && defined(_M_X64)
|
||||
/* Avoid type conflicts with built-in functions. */
|
||||
#define HAVE_STRNLEN
|
||||
#endif
|
||||
|
||||
#ifndef __NT__
|
||||
#undef FILE_SHARE_DELETE
|
||||
#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 {
|
||||
uint key_offset,key_length; /* Length of key if const length */
|
||||
uint records,blength,current_record;
|
||||
uint records, blength;
|
||||
uint flags;
|
||||
DYNAMIC_ARRAY array; /* Place for hash_keys */
|
||||
hash_get_key get_key;
|
||||
@ -41,6 +41,9 @@ typedef struct st_hash {
|
||||
CHARSET_INFO *charset;
|
||||
} 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)
|
||||
my_bool _hash_init(HASH *hash, CHARSET_INFO *charset,
|
||||
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 my_hash_reset(HASH *hash);
|
||||
byte *hash_element(HASH *hash,uint idx);
|
||||
gptr hash_search(HASH *info,const byte *key,uint length);
|
||||
gptr hash_next(HASH *info,const byte *key,uint length);
|
||||
gptr hash_search(const 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 hash_delete(HASH *hash,byte *record);
|
||||
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 */
|
||||
|
||||
#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_ETIMEDOUT WSAETIMEDOUT
|
||||
#define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK
|
||||
#define SOCKET_EADDRINUSE WSAEADDRINUSE
|
||||
#define SOCKET_ENFILE ENFILE
|
||||
#define SOCKET_EMFILE EMFILE
|
||||
#elif defined(OS2)
|
||||
@ -969,6 +970,7 @@ typedef off_t os_off_t;
|
||||
#define SOCKET_EAGAIN SOCEINPROGRESS
|
||||
#define SOCKET_ETIMEDOUT SOCKET_EINTR
|
||||
#define SOCKET_EWOULDBLOCK SOCEWOULDBLOCK
|
||||
#define SOCKET_EADDRINUSE SOCEADDRINUSE
|
||||
#define SOCKET_ENFILE SOCENFILE
|
||||
#define SOCKET_EMFILE SOCEMFILE
|
||||
#define closesocket(A) soclose(A)
|
||||
@ -979,6 +981,7 @@ typedef off_t os_off_t;
|
||||
#define SOCKET_EAGAIN EAGAIN
|
||||
#define SOCKET_ETIMEDOUT SOCKET_EINTR
|
||||
#define SOCKET_EWOULDBLOCK EWOULDBLOCK
|
||||
#define SOCKET_EADDRINUSE EADDRINUSE
|
||||
#define SOCKET_ENFILE ENFILE
|
||||
#define SOCKET_EMFILE EMFILE
|
||||
#endif
|
||||
|
@ -755,8 +755,9 @@ extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint array_index);
|
||||
extern void freeze_size(DYNAMIC_ARRAY *array);
|
||||
#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 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 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,
|
||||
uint init_alloc,uint alloc_increment);
|
||||
|
@ -39,8 +39,28 @@
|
||||
|
||||
#define mysql_declare_plugin \
|
||||
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_[]= {
|
||||
#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.
|
||||
@ -56,6 +76,7 @@ struct st_mysql_plugin
|
||||
int (*init)(void); /* the function to invoke when plugin is loaded */
|
||||
int (*deinit)(void); /* the function to invoke when plugin is unloaded */
|
||||
uint version; /* plugin version (for SHOW PLUGINS) */
|
||||
struct st_mysql_show_var *status_vars;
|
||||
};
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
target = libmysqlclient_r.la
|
||||
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 \
|
||||
$(openssl_includes) $(yassl_includes) @ZLIB_INCLUDES@
|
||||
@ -32,7 +32,7 @@ include $(top_srcdir)/libmysql/Makefile.shared
|
||||
libmysql_dir = $(top_srcdir)/libmysql
|
||||
|
||||
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)
|
||||
|
||||
# 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()");
|
||||
mtr_timer_stop_all($::glob_timers);
|
||||
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;
|
||||
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
|
||||
|
||||
$master->[0]=
|
||||
@ -813,7 +819,7 @@ sub command_line_setup () {
|
||||
path_myerr => "$opt_vardir/log/master.err",
|
||||
path_mylog => "$opt_vardir/log/master.log",
|
||||
path_mypid => "$opt_vardir/run/master.pid",
|
||||
path_mysock => "$opt_tmpdir/master.sock",
|
||||
path_mysock => "$sockdir/master.sock",
|
||||
path_myport => $opt_master_myport,
|
||||
start_timeout => 400, # enough time create innodb tables
|
||||
|
||||
@ -826,7 +832,7 @@ sub command_line_setup () {
|
||||
path_myerr => "$opt_vardir/log/master1.err",
|
||||
path_mylog => "$opt_vardir/log/master1.log",
|
||||
path_mypid => "$opt_vardir/run/master1.pid",
|
||||
path_mysock => "$opt_tmpdir/master1.sock",
|
||||
path_mysock => "$sockdir/master1.sock",
|
||||
path_myport => $opt_master_myport + 1,
|
||||
start_timeout => 400, # enough time create innodb tables
|
||||
};
|
||||
@ -837,7 +843,7 @@ sub command_line_setup () {
|
||||
path_myerr => "$opt_vardir/log/slave.err",
|
||||
path_mylog => "$opt_vardir/log/slave.log",
|
||||
path_mypid => "$opt_vardir/run/slave.pid",
|
||||
path_mysock => "$opt_tmpdir/slave.sock",
|
||||
path_mysock => "$sockdir/slave.sock",
|
||||
path_myport => $opt_slave_myport,
|
||||
start_timeout => 400,
|
||||
};
|
||||
@ -848,7 +854,7 @@ sub command_line_setup () {
|
||||
path_myerr => "$opt_vardir/log/slave1.err",
|
||||
path_mylog => "$opt_vardir/log/slave1.log",
|
||||
path_mypid => "$opt_vardir/run/slave1.pid",
|
||||
path_mysock => "$opt_tmpdir/slave1.sock",
|
||||
path_mysock => "$sockdir/slave1.sock",
|
||||
path_myport => $opt_slave_myport + 1,
|
||||
start_timeout => 300,
|
||||
};
|
||||
@ -859,7 +865,7 @@ sub command_line_setup () {
|
||||
path_myerr => "$opt_vardir/log/slave2.err",
|
||||
path_mylog => "$opt_vardir/log/slave2.log",
|
||||
path_mypid => "$opt_vardir/run/slave2.pid",
|
||||
path_mysock => "$opt_tmpdir/slave2.sock",
|
||||
path_mysock => "$sockdir/slave2.sock",
|
||||
path_myport => $opt_slave_myport + 2,
|
||||
start_timeout => 300,
|
||||
};
|
||||
@ -869,7 +875,7 @@ sub command_line_setup () {
|
||||
path_err => "$opt_vardir/log/im.err",
|
||||
path_log => "$opt_vardir/log/im.log",
|
||||
path_pid => "$opt_vardir/run/im.pid",
|
||||
path_sock => "$opt_tmpdir/im.sock",
|
||||
path_sock => "$sockdir/im.sock",
|
||||
port => $im_port,
|
||||
start_timeout => $master->[0]->{'start_timeout'},
|
||||
admin_login => 'im_admin',
|
||||
@ -884,7 +890,7 @@ sub command_line_setup () {
|
||||
server_id => 1,
|
||||
port => $im_mysqld1_port,
|
||||
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",
|
||||
};
|
||||
|
||||
@ -893,7 +899,7 @@ sub command_line_setup () {
|
||||
server_id => 2,
|
||||
port => $im_mysqld2_port,
|
||||
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",
|
||||
nonguarded => 1,
|
||||
};
|
||||
|
@ -1957,4 +1957,9 @@ d varchar(255) character set utf8,
|
||||
e varchar(255) character set utf8,
|
||||
key (a,b,c,d,e)) engine=bdb;
|
||||
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
|
||||
|
@ -262,21 +262,22 @@ master-bin.000001 209 Write_rows 1 #
|
||||
master-bin.000001 243 Table_map 1 # test.t1
|
||||
master-bin.000001 282 Write_rows 1 #
|
||||
master-bin.000001 316 Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 343 Table_map 1 # test.t1
|
||||
master-bin.000001 382 Delete_rows 1 #
|
||||
master-bin.000001 421 Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 448 Query 1 # use `test`; alter table t2 type=MyISAM
|
||||
master-bin.000001 537 Table_map 1 # test.t1
|
||||
master-bin.000001 576 Write_rows 1 #
|
||||
master-bin.000001 610 Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 637 Table_map 1 # test.t2
|
||||
master-bin.000001 676 Write_rows 1 #
|
||||
master-bin.000001 710 Query 1 # use `test`; drop table t1,t2
|
||||
master-bin.000001 789 Query 1 # use `test`; create table t0 (n int)
|
||||
master-bin.000001 875 Table_map 1 # test.t0
|
||||
master-bin.000001 914 Write_rows 1 #
|
||||
master-bin.000001 948 Table_map 1 # test.t0
|
||||
master-bin.000001 987 Write_rows 1 #
|
||||
master-bin.000001 1021 Query 1 # use `test`; create table t2 (n int) engine=innodb
|
||||
master-bin.000001 343 Query 1 # use `test`; delete from t1
|
||||
master-bin.000001 420 Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 447 Query 1 # use `test`; delete from t2
|
||||
master-bin.000001 524 Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 551 Query 1 # use `test`; alter table t2 type=MyISAM
|
||||
master-bin.000001 640 Table_map 1 # test.t1
|
||||
master-bin.000001 679 Write_rows 1 #
|
||||
master-bin.000001 713 Xid 1 # COMMIT /* xid= */
|
||||
master-bin.000001 740 Table_map 1 # test.t2
|
||||
master-bin.000001 779 Write_rows 1 #
|
||||
master-bin.000001 813 Query 1 # use `test`; drop table t1,t2
|
||||
master-bin.000001 892 Query 1 # use `test`; create table t0 (n int)
|
||||
master-bin.000001 978 Table_map 1 # test.t0
|
||||
master-bin.000001 1017 Write_rows 1 #
|
||||
master-bin.000001 1051 Table_map 1 # test.t0
|
||||
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");
|
||||
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`; create table t2 (a varchar(200)) engine=blackhole
|
||||
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 # Query 1 # use `test`; COMMIT
|
||||
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';
|
||||
Warnings:
|
||||
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';
|
||||
ERROR 23000: Duplicate entry '3' for key 1
|
||||
select * from t1;
|
||||
@ -635,8 +634,6 @@ create table t1 (
|
||||
a varchar(112) charset utf8 collate utf8_bin not null,
|
||||
primary key (a)
|
||||
) select 'test' as a ;
|
||||
Warnings:
|
||||
Warning 1364 Field 'a' doesn't have a default value
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -652,9 +649,6 @@ create table t1 (
|
||||
a varchar(12) charset utf8 collate utf8_bin not null,
|
||||
b int not null, primary key (a)
|
||||
) 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;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -664,12 +658,37 @@ t1 CREATE TABLE `t1` (
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop 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,
|
||||
b int not null, primary key (a)
|
||||
) 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;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
@ -682,8 +701,6 @@ create table t1 (
|
||||
a varchar(12) charset utf8 collate utf8_bin,
|
||||
b int not null, primary key (a)
|
||||
) select 'a' as a , 1 as b from t2 ;
|
||||
Warnings:
|
||||
Warning 1364 Field 'b' doesn't have a default value
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
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,
|
||||
primary key (a1)
|
||||
) 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;
|
||||
create table t2 (
|
||||
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,
|
||||
primary key (a1)
|
||||
) 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;
|
||||
create table t2 ( a int default 3, b int default 3)
|
||||
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));
|
||||
insert into t1 values
|
||||
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
||||
|
@ -1077,6 +1077,22 @@ character_maximum_length character_octet_length
|
||||
32 32
|
||||
64 64
|
||||
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";
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
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)
|
||||
0
|
||||
kill @id;
|
||||
select 1;
|
||||
Got one of the listed errors
|
||||
select ((@id := kill_id) - kill_id) from t1;
|
||||
((@id := kill_id) - kill_id)
|
||||
0
|
||||
|
@ -1,4 +1,4 @@
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
DROP TABLE IF EXISTS t1,t2,test1,test2;
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
CREATE TABLE t2 (a int, b int);
|
||||
|
@ -31,5 +31,5 @@ use test;
|
||||
select * from t1;
|
||||
n
|
||||
1234
|
||||
drop table t1;
|
||||
DROP DATABASE mysqltest1;
|
||||
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;
|
||||
id hex(b1) vc bc d f total y t
|
||||
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 SELECT on mysqltest1.t1 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()
|
||||
deterministic
|
||||
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 SELECT on mysqltest1.t1 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()
|
||||
deterministic
|
||||
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));
|
||||
select @@time_zone;
|
||||
@@time_zone
|
||||
Europe/Moscow
|
||||
Japan
|
||||
select @@time_zone;
|
||||
@@time_zone
|
||||
Europe/Moscow
|
||||
@ -23,10 +23,10 @@ t n
|
||||
2004-06-11 09:39:02 4
|
||||
select * from t1;
|
||||
t n
|
||||
2005-01-01 00:00:00 1
|
||||
2005-06-11 09:39:02 2
|
||||
2004-01-01 00:00:00 3
|
||||
2004-06-11 09:39:02 4
|
||||
2005-01-01 06:00:00 1
|
||||
2005-06-11 14:39:02 2
|
||||
2004-01-01 06:00:00 3
|
||||
2004-06-11 14:39:02 4
|
||||
delete from t1;
|
||||
set time_zone='Europe/Moscow';
|
||||
insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL);
|
||||
@ -39,22 +39,6 @@ select * from t1;
|
||||
t n
|
||||
2004-01-01 00:00:00 5
|
||||
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;
|
||||
set time_zone='UTC';
|
||||
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;
|
||||
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;
|
@ -767,8 +767,7 @@ deallocate prepare stmt1;
|
||||
drop procedure p1;
|
||||
drop table t1, t2, t3;
|
||||
create table t1 (a int);
|
||||
drop procedure if exists p2;
|
||||
CREATE PROCEDURE `p2`()
|
||||
CREATE PROCEDURE `p1`()
|
||||
begin
|
||||
insert into t1 values (1);
|
||||
end//
|
||||
@ -777,8 +776,8 @@ begin
|
||||
declare done int default 0;
|
||||
set done= not done;
|
||||
end//
|
||||
CALL p2();
|
||||
drop procedure p2;
|
||||
CALL p1();
|
||||
drop procedure p1;
|
||||
drop table t1;
|
||||
create trigger t1_bi before insert on test.t1 for each row set @a:=0;
|
||||
ERROR 3D000: No database selected
|
||||
|
@ -2423,6 +2423,9 @@ drop view v1;
|
||||
drop table t1;
|
||||
create table t1(f1 int, f2 int);
|
||||
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;
|
||||
select f1, sum(f2) from v1 group by f1;
|
||||
f1 sum(f2)
|
||||
|
@ -1036,4 +1036,13 @@ create table t1 (a varchar(255) character set utf8,
|
||||
e varchar(255) character set utf8,
|
||||
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
|
||||
|
@ -565,6 +565,22 @@ create table t1 (
|
||||
show create 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
|
||||
create table t1 (
|
||||
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
|
||||
kill : Unstable test case, bug#9712
|
||||
rpl_bit_npk : Bug #13418
|
||||
ndb_cache2 : Bug #15004
|
||||
ndb_cache_multi2: Bug #15004
|
||||
func_group : Bug #15448
|
||||
func_math : Bug #15448
|
||||
group_min_max : Bug #15448
|
||||
#mysqlslap : Bug #15483
|
||||
innodb_concurrent : Results are not deterministic, Elliot will fix (BUG#3300)
|
||||
subselect : Bug#15706
|
||||
type_time : Bug#15805
|
||||
#rpl000002 : Bug#15920 Temporary tables are not binlogged in SBR
|
||||
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
|
||||
#ps_7ndb : Bug#15923 Core 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
|
||||
drop table if exists t1;
|
||||
drop table if exists t1,t3,t4,t5;
|
||||
--enable_warnings
|
||||
|
||||
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;
|
||||
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
||||
|
@ -25,11 +25,18 @@ select ((@id := kill_id) - kill_id) from t1;
|
||||
kill @id;
|
||||
|
||||
connection con1;
|
||||
--sleep 1
|
||||
--sleep 2
|
||||
|
||||
# this statement should fail
|
||||
--error 2006,2013
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
# One of the following statements should fail
|
||||
--error 0,2006,2013
|
||||
select 1;
|
||||
--error 0,2006,2013
|
||||
select 1;
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
|
||||
--enable_reconnect
|
||||
# this should work, and we should have a new connection_id()
|
||||
select ((@id := kill_id) - kill_id) from t1;
|
||||
|
@ -2,7 +2,7 @@
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
DROP TABLE IF EXISTS t1,t2,test1,test2;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
|
@ -29,7 +29,6 @@
|
||||
#
|
||||
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_binlog_format_row.inc
|
||||
--source include/master-slave.inc
|
||||
let $engine_type= "InnoDB";
|
||||
-- source extra/rpl_tests/rpl_ddl.test
|
@ -46,12 +46,13 @@ show tables;
|
||||
use test;
|
||||
select * from t1;
|
||||
|
||||
system rm var/master-data/mysqltest1/f1.txt;
|
||||
connection master;
|
||||
drop table t1;
|
||||
DROP DATABASE mysqltest1;
|
||||
sync_slave_with_master;
|
||||
|
||||
#cleanup
|
||||
connection slave;
|
||||
stop slave;
|
||||
system rm -rf var/master-data/mysqltest1;
|
||||
#system rm -rf var/master-data/mysqltest1;
|
||||
|
||||
|
@ -7,20 +7,19 @@
|
||||
|
||||
connection master;
|
||||
create table t1 (a int primary key);
|
||||
create table t4 (a int primary key);
|
||||
# generate an error that goes to the binlog
|
||||
--error 1062
|
||||
insert into t1 values (1),(1);
|
||||
insert into t4 values (1),(2);
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
# as the t1 table is ignored on the slave, the slave should be able to sync
|
||||
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
|
||||
show tables like 't1';
|
||||
show tables like 't4';
|
||||
SELECT * FROM test.t4;
|
||||
connection master;
|
||||
drop table t1;
|
||||
save_master_pos;
|
||||
@ -46,17 +45,20 @@ real_sleep 2;
|
||||
select (@id := id) - id from t3;
|
||||
kill @id;
|
||||
drop table t2,t3;
|
||||
insert into t4 values (3),(4);
|
||||
connection master;
|
||||
--error 0,1053,2013
|
||||
reap;
|
||||
connection master1;
|
||||
--replace_column 2 # 5 #
|
||||
show binlog events from 102;
|
||||
save_master_pos;
|
||||
connection slave;
|
||||
# SQL slave thread should not have stopped (because table of the killed
|
||||
# query is in the ignore list).
|
||||
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
|
||||
# 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;
|
||||
alter table t1 engine=myisam;
|
||||
show create table t1;
|
||||
sync_slave_with_master;
|
||||
|
||||
connection slave;
|
||||
alter table t1 engine=myisam;
|
||||
@ -48,6 +49,7 @@ show create table t1;
|
||||
connection master;
|
||||
alter table t1 engine=memory;
|
||||
show create table t1;
|
||||
sync_slave_with_master;
|
||||
|
||||
connection slave;
|
||||
alter table t1 engine=myisam;
|
||||
@ -72,6 +74,7 @@ show create table t1;
|
||||
connection master;
|
||||
alter table t1 engine=innodb;
|
||||
show create table t1;
|
||||
sync_slave_with_master;
|
||||
|
||||
connection slave;
|
||||
alter table t1 engine=myisam;
|
||||
@ -94,6 +97,8 @@ show create table t1;
|
||||
# cleanup
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
# Need to drop mysqltest1 as well so other test will pass.
|
||||
DROP DATABASE mysqltest1;
|
||||
sync_slave_with_master;
|
||||
|
||||
# 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 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, 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,);
|
||||
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, 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,);
|
||||
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.
|
||||
|
||||
# There is currently some bug possibly in prepared statements (this
|
||||
@ -51,8 +48,11 @@ 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
|
||||
# Change Author: JBM
|
||||
# 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
|
||||
# (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
|
||||
# (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)
|
||||
#
|
||||
set time_zone='MET';
|
||||
@ -127,3 +127,4 @@ select * from t2;
|
||||
connection master;
|
||||
drop table t1, t2;
|
||||
sync_slave_with_master;
|
||||
|
@ -1,4 +1,3 @@
|
||||
# row-based and statement binlog difference in result files
|
||||
#
|
||||
# Test of replicating user variables
|
||||
#
|
@ -1,5 +1,4 @@
|
||||
# NYI - row-based cannot use CREATE ... SELECT
|
||||
--source include/have_binlog_format_statement.inc
|
||||
|
||||
source include/master-slave.inc;
|
||||
--disable_warnings
|
||||
@ -10,7 +9,7 @@ reset master;
|
||||
--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
|
||||
#
|
||||
connection master;
|
||||
@ -46,5 +45,8 @@ select * from v1 order by a;
|
||||
connection master;
|
||||
drop table t1;
|
||||
sync_slave_with_master;
|
||||
--replace_column 2 # 5 #
|
||||
show binlog events limit 1,100;
|
||||
# Change Author: JBM
|
||||
# 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.
|
||||
#
|
||||
create table t1 (a int);
|
||||
--disable_warnings
|
||||
drop procedure if exists p2;
|
||||
--enable_warnings
|
||||
DELIMITER //;
|
||||
CREATE PROCEDURE `p2`()
|
||||
CREATE PROCEDURE `p1`()
|
||||
begin
|
||||
insert into t1 values (1);
|
||||
end//
|
||||
@ -944,8 +941,8 @@ begin
|
||||
set done= not done;
|
||||
end//
|
||||
DELIMITER ;//
|
||||
CALL p2();
|
||||
drop procedure p2;
|
||||
CALL p1();
|
||||
drop procedure p1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
|
@ -2279,6 +2279,7 @@ drop table t1;
|
||||
#
|
||||
create table t1(f1 int, f2 int);
|
||||
insert into t1 values (null, 10), (null,2);
|
||||
select f1, sum(f2) from t1 group by f1;
|
||||
create view v1 as select * from t1;
|
||||
select f1, sum(f2) from v1 group by f1;
|
||||
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 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;
|
||||
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_length=key_length;
|
||||
hash->blength=1;
|
||||
hash->current_record= NO_RECORD; /* For the future */
|
||||
hash->get_key=get_key;
|
||||
hash->free=free_element;
|
||||
hash->flags=flags;
|
||||
@ -135,7 +135,6 @@ void my_hash_reset(HASH *hash)
|
||||
reset_dynamic(&hash->array);
|
||||
/* Set row pointers so that the hash can be reused at once */
|
||||
hash->blength= 1;
|
||||
hash->current_record= NO_RECORD;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
@ -147,7 +146,8 @@ void my_hash_reset(HASH *hash)
|
||||
*/
|
||||
|
||||
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)
|
||||
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));
|
||||
}
|
||||
|
||||
static uint hash_rec_mask(HASH *hash,HASH_LINK *pos,uint buffmax,
|
||||
uint maxlength)
|
||||
static uint hash_rec_mask(const HASH *hash, HASH_LINK *pos,
|
||||
uint buffmax, uint maxlength)
|
||||
{
|
||||
uint length;
|
||||
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 */
|
||||
/* Sets info->current_ptr to found record */
|
||||
gptr hash_search(const HASH *hash, const byte *key, uint length)
|
||||
{
|
||||
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;
|
||||
uint flag,idx;
|
||||
DBUG_ENTER("hash_search");
|
||||
DBUG_ENTER("hash_first");
|
||||
|
||||
flag=1;
|
||||
if (hash->records)
|
||||
@ -206,7 +217,7 @@ gptr hash_search(HASH *hash,const byte *key,uint length)
|
||||
if (!hashcmp(hash,pos,key,length))
|
||||
{
|
||||
DBUG_PRINT("exit",("found key at %d",idx));
|
||||
hash->current_record= idx;
|
||||
*current_record= idx;
|
||||
DBUG_RETURN (pos->data);
|
||||
}
|
||||
if (flag)
|
||||
@ -218,31 +229,32 @@ gptr hash_search(HASH *hash,const byte *key,uint length)
|
||||
}
|
||||
while ((idx=pos->next) != NO_RECORD);
|
||||
}
|
||||
hash->current_record= NO_RECORD;
|
||||
*current_record= NO_RECORD;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
/* Get next record with identical key */
|
||||
/* 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;
|
||||
uint idx;
|
||||
|
||||
if (hash->current_record != NO_RECORD)
|
||||
if (*current_record != NO_RECORD)
|
||||
{
|
||||
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;
|
||||
if (!hashcmp(hash,pos,key,length))
|
||||
{
|
||||
hash->current_record= idx;
|
||||
*current_record= idx;
|
||||
return pos->data;
|
||||
}
|
||||
}
|
||||
hash->current_record=NO_RECORD;
|
||||
*current_record= NO_RECORD;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -281,7 +293,8 @@ static void movelink(HASH_LINK *array,uint find,uint next_link,uint newlink)
|
||||
!= 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;
|
||||
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)))
|
||||
return(TRUE); /* No more memory */
|
||||
|
||||
info->current_record= NO_RECORD;
|
||||
data=dynamic_element(&info->array,0,HASH_LINK*);
|
||||
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;
|
||||
hash->current_record= NO_RECORD;
|
||||
lastpos=data+hash->records;
|
||||
|
||||
/* 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)
|
||||
DBUG_RETURN(1); /* Not found in links */
|
||||
}
|
||||
hash->current_record= NO_RECORD;
|
||||
org_link= *pos;
|
||||
empty=idx;
|
||||
|
||||
@ -593,10 +603,10 @@ byte *hash_element(HASH *hash,uint idx)
|
||||
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 */
|
||||
dynamic_element(&hash->array,idx,HASH_LINK*)->data=new_row;
|
||||
if (*current_record != NO_RECORD) /* Safety */
|
||||
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));
|
||||
next->left-= Size;
|
||||
|
||||
if (MyFlags & MY_ZEROFILL)
|
||||
bzero(point, Size);
|
||||
return(point);
|
||||
} /* my_once_alloc */
|
||||
|
||||
|
@ -74,7 +74,7 @@ static int do_test()
|
||||
bzero((char*) key1,sizeof(key1[0])*1000);
|
||||
|
||||
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;
|
||||
printf("- Writing records:\n");
|
||||
|
||||
@ -172,15 +172,16 @@ static int do_test()
|
||||
break;
|
||||
if (key1[j] > 1)
|
||||
{
|
||||
HASH_SEARCH_STATE state;
|
||||
printf("- Testing identical read\n");
|
||||
sprintf(key,"%6d",j);
|
||||
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);
|
||||
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++;
|
||||
if (pos != (ulong) key1[j])
|
||||
{
|
||||
@ -189,7 +190,7 @@ static int do_test()
|
||||
}
|
||||
}
|
||||
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;
|
||||
|
||||
printf("- Copying and removing records\n");
|
||||
|
@ -1,4 +1,4 @@
|
||||
INCLUDES= -I$(top_builddir)/include
|
||||
noinst_LTLIBRARIES= libmypluglib.la
|
||||
libmypluglib_la_SOURCES= plugin_example.c
|
||||
libmypluglib_la_LDFLAGS= -module
|
||||
noinst_LTLIBRARIES= mypluglib.la
|
||||
mypluglib_la_SOURCES= plugin_example.c
|
||||
mypluglib_la_LDFLAGS= -module -rpath $(pkglibdir)
|
||||
|
@ -18,6 +18,8 @@
|
||||
#include <m_ctype.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
|
||||
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;
|
||||
|
||||
number_of_calls++;
|
||||
|
||||
for (end= start= param->doc;; end++)
|
||||
{
|
||||
if (end == docend)
|
||||
@ -198,6 +202,16 @@ static struct st_mysql_ftparser simple_parser_descriptor=
|
||||
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
|
||||
@ -211,6 +225,8 @@ mysql_declare_plugin
|
||||
"MySQL AB", /* author */
|
||||
"Simple Full-Text Parser", /* description */
|
||||
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;
|
||||
|
@ -229,7 +229,7 @@ then
|
||||
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 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 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),"
|
||||
@ -251,7 +251,7 @@ then
|
||||
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 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 PRIMARY KEY (Host,Db,User,Table_name,Column_name)"
|
||||
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 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 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 KEY Grantor (Grantor)"
|
||||
c_pp="$c_pp ) engine=MyISAM"
|
||||
@ -743,7 +743,7 @@ fi
|
||||
|
||||
cat << END_OF_DATA
|
||||
use mysql;
|
||||
set table_type=myisam;
|
||||
set storage_engine=myisam;
|
||||
$c_d
|
||||
$i_d
|
||||
|
||||
|
@ -447,7 +447,7 @@ All benchmarks takes the following options:
|
||||
--create-options=#
|
||||
Extra argument to all create statements. If you for example want to
|
||||
create all MySQL tables as BDB tables use:
|
||||
--create-options=TYPE=BDB
|
||||
--create-options=ENGINE=BDB
|
||||
|
||||
--database (Default $opt_database)
|
||||
In which database the test tables are created.
|
||||
|
@ -174,29 +174,29 @@ sub new
|
||||
|
||||
# Some fixes that depends on the environment
|
||||
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
|
||||
}
|
||||
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
|
||||
}
|
||||
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
|
||||
$limits{'max_columns'} = 90; # Max number of columns in table
|
||||
$limits{'max_tables'} = 32; # No comments
|
||||
}
|
||||
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
|
||||
}
|
||||
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{'max_tables'} = 500;
|
||||
|
@ -2607,8 +2607,7 @@ int ha_federated::stash_remote_error()
|
||||
{
|
||||
DBUG_ENTER("ha_federated::stash_remote_error()");
|
||||
remote_error_number= mysql_errno(mysql);
|
||||
my_snprintf(remote_error_buf, sizeof(remote_error_buf), "%s",
|
||||
mysql_error(mysql));
|
||||
strmake(remote_error_buf, mysql_error(mysql), sizeof(remote_error_buf)-1);
|
||||
DBUG_RETURN(HA_FEDERATED_ERROR_WITH_REMOTE_SYSTEM);
|
||||
}
|
||||
|
||||
|
@ -253,7 +253,7 @@ innobase_commit_low(
|
||||
/*================*/
|
||||
trx_t* trx); /* in: transaction handle */
|
||||
|
||||
struct show_var_st innodb_status_variables[]= {
|
||||
SHOW_VAR innodb_status_variables[]= {
|
||||
{"buffer_pool_pages_data",
|
||||
(char*) &export_vars.innodb_buffer_pool_pages_data, SHOW_LONG},
|
||||
{"buffer_pool_pages_dirty",
|
||||
|
@ -212,7 +212,7 @@ class ha_innobase: public handler
|
||||
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_flush_log_at_trx_commit;
|
||||
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);
|
||||
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);
|
||||
|
||||
|
@ -224,7 +224,7 @@ static int update_status_variables(Ndb_cluster_connection *c)
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct show_var_st ndb_status_variables[]= {
|
||||
SHOW_VAR ndb_status_variables[]= {
|
||||
{"cluster_node_id", (char*) &ndb_cluster_node_id, SHOW_LONG},
|
||||
{"connected_host", (char*) &ndb_connected_host, SHOW_CHAR_PTR},
|
||||
{"connected_port", (char*) &ndb_connected_port, SHOW_LONG},
|
||||
@ -370,7 +370,8 @@ Thd_ndb::~Thd_ndb()
|
||||
if (ndb)
|
||||
{
|
||||
#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))
|
||||
{
|
||||
uint leaked= (uint) tmp.m_created - tmp.m_free;
|
||||
@ -382,8 +383,8 @@ Thd_ndb::~Thd_ndb()
|
||||
}
|
||||
#endif
|
||||
delete ndb;
|
||||
ndb= NULL;
|
||||
}
|
||||
ndb= NULL;
|
||||
changed_tables.empty();
|
||||
}
|
||||
|
||||
@ -3359,6 +3360,10 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
||||
if (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++)
|
||||
{
|
||||
PRINT_OPTION_FLAGS(thd);
|
||||
@ -3373,7 +3378,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
||||
ERR_RETURN(ndb->getNdbError());
|
||||
no_uncommitted_rows_reset(thd);
|
||||
thd_ndb->stmt= trans;
|
||||
trans_register_ha(thd, FALSE, &ndbcluster_hton);
|
||||
if (m_transaction_on)
|
||||
trans_register_ha(thd, FALSE, &ndbcluster_hton);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3388,7 +3394,8 @@ int ha_ndbcluster::external_lock(THD *thd, int lock_type)
|
||||
ERR_RETURN(ndb->getNdbError());
|
||||
no_uncommitted_rows_reset(thd);
|
||||
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
|
||||
@ -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_autoincrement_prefetch=
|
||||
(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;
|
||||
DBUG_ASSERT(m_active_trans);
|
||||
@ -5172,7 +5175,8 @@ int ndbcluster_end(ha_panic_function type)
|
||||
if (g_ndb)
|
||||
{
|
||||
#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))
|
||||
{
|
||||
uint leaked= (uint) tmp.m_created - tmp.m_free;
|
||||
@ -5184,10 +5188,9 @@ int ndbcluster_end(ha_panic_function type)
|
||||
}
|
||||
#endif
|
||||
delete g_ndb;
|
||||
g_ndb= NULL;
|
||||
}
|
||||
g_ndb= NULL;
|
||||
if (g_ndb_cluster_connection)
|
||||
delete g_ndb_cluster_connection;
|
||||
delete g_ndb_cluster_connection;
|
||||
g_ndb_cluster_connection= NULL;
|
||||
|
||||
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)
|
||||
{
|
||||
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))
|
||||
{
|
||||
uint buflen=
|
||||
|
@ -769,7 +769,7 @@ private:
|
||||
Ndb *get_ndb();
|
||||
};
|
||||
|
||||
extern struct show_var_st ndb_status_variables[];
|
||||
extern SHOW_VAR ndb_status_variables[];
|
||||
|
||||
bool ndbcluster_init(void);
|
||||
int ndbcluster_end(ha_panic_function flag);
|
||||
|
@ -1181,15 +1181,6 @@ int ha_release_temporary_latches(THD *thd)
|
||||
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 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.
|
||||
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);
|
||||
}
|
||||
@ -2798,16 +2790,22 @@ bool ha_show_status(THD *thd, handlerton *db_type, enum ha_stat_type stat)
|
||||
- Row-based replication is on
|
||||
- It is not a temporary table
|
||||
- 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
|
||||
static bool check_table_binlog_row_based(THD *thd, TABLE *table)
|
||||
{
|
||||
return
|
||||
binlog_row_based &&
|
||||
thd && (thd->options & OPTION_BIN_LOG) &&
|
||||
(table->s->tmp_table == NO_TMP_TABLE);
|
||||
/* The Sun compiler cannot instantiate the template below if this is
|
||||
declared static, but it works by putting it into an anonymous
|
||||
namespace. */
|
||||
namespace {
|
||||
bool check_table_binlog_row_based(THD *thd, TABLE *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,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user