Auto-merge from mysql-next-mr.

This commit is contained in:
Alexander Nozdrin 2010-01-21 12:14:34 +03:00
commit b78e3a5d1e
646 changed files with 96198 additions and 12703 deletions

View File

@ -392,6 +392,7 @@ client/rpl_record_old.h
client/rpl_tblmap.h
client/rpl_tblmap.cc
client/rpl_utility.h
client/rpl_utility.cc
client/select_test
client/sql_string.cpp
client/ssl_test
@ -1143,6 +1144,7 @@ libmysqld/rpl_handler.cc
libmysqld/rpl_injector.cc
libmysqld/rpl_record.cc
libmysqld/rpl_record_old.cc
libmysqld/rpl_utility.cc
libmysqld/scheduler.cc
libmysqld/set_var.cc
libmysqld/simple-test
@ -3072,3 +3074,4 @@ libmysqld/rpl_handler.cc
dbug/tests
libmysqld/sys_vars.cc
libmysqld/keycaches.cc
client/dtoa.c

View File

@ -1,4 +1,20 @@
#!/bin/sh
# Copyright (C) 2009 Sun Microsystems, Inc
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# This script's purpose is to update the automake/autoconf helper scripts and
# to run a plain "configure" without any special compile flags. Only features
@ -61,6 +77,7 @@ fi
# Remember that configure restricts the man pages to the configured features !
./configure \
--with-embedded-server \
--with-perfschema \
--with-ndbcluster
$gmake

View File

@ -104,9 +104,10 @@ DEFS = -DMYSQL_CLIENT_NO_THREADS \
-DMYSQL_DATADIR="\"$(localstatedir)\""
sql_src=log_event.h mysql_priv.h rpl_constants.h \
rpl_utility.h rpl_tblmap.h rpl_tblmap.cc \
rpl_tblmap.h rpl_tblmap.cc \
log_event.cc my_decimal.h my_decimal.cc \
log_event_old.h log_event_old.cc \
rpl_utility.h rpl_utility.cc \
rpl_record_old.h rpl_record_old.cc
strings_src=decimal.c dtoa.c

View File

@ -2140,4 +2140,4 @@ int main(int argc, char** argv)
#include "my_decimal.cc"
#include "log_event.cc"
#include "log_event_old.cc"
#include "rpl_utility.cc"

View File

@ -40,9 +40,9 @@ extern "C" {
typedef struct unicase_info_st
{
uint16 toupper;
uint16 tolower;
uint16 sort;
uint32 toupper;
uint32 tolower;
uint32 sort;
} MY_UNICASE_INFO;
@ -439,6 +439,14 @@ extern size_t my_caseup_mb(CHARSET_INFO *, char *src, size_t srclen,
char *dst, size_t dstlen);
extern size_t my_casedn_mb(CHARSET_INFO *, char *src, size_t srclen,
char *dst, size_t dstlen);
extern size_t my_caseup_mb_varlen(CHARSET_INFO *, char *src, size_t srclen,
char *dst, size_t dstlen);
extern size_t my_casedn_mb_varlen(CHARSET_INFO *, char *src, size_t srclen,
char *dst, size_t dstlen);
extern size_t my_caseup_ujis(CHARSET_INFO *, char *src, size_t srclen,
char *dst, size_t dstlen);
extern size_t my_casedn_ujis(CHARSET_INFO *, char *src, size_t srclen,
char *dst, size_t dstlen);
extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *);
int my_wildcmp_mb(CHARSET_INFO *,

View File

@ -117,6 +117,12 @@ enum enum_server_command
thread */
#define REFRESH_MASTER 128 /* Remove all bin logs in the index
and truncate the index */
#define REFRESH_ERROR_LOG 256 /* Rotate only the erorr log */
#define REFRESH_ENGINE_LOG 512 /* Flush all storage engine logs */
#define REFRESH_BINARY_LOG 1024 /* Flush the binary log */
#define REFRESH_RELAY_LOG 2048 /* Flush the relay log */
#define REFRESH_GENERAL_LOG 4096 /* Flush the general log */
#define REFRESH_SLOW_LOG 8192 /* Flush the slow query log */
/* The following can't be set with mysql_refresh() */
#define REFRESH_READ_LOCK 16384 /* Lock tables for read */

View File

@ -56,7 +56,7 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
item_geofunc.cc item_subselect.cc item_row.cc\
item_xmlfunc.cc \
key.cc lock.cc log.cc sql_state.c \
log_event.cc rpl_record.cc \
log_event.cc rpl_record.cc rpl_utility.cc \
log_event_old.cc rpl_record_old.cc \
protocol.cc net_serv.cc opt_range.cc \
opt_sum.cc procedure.cc records.cc sql_acl.cc \

View File

@ -1,4 +1,4 @@
# Copyright (C) 2000-2006 MySQL AB
# Copyright (C) 2000-2006 MySQL AB, 2008-2009 Sun Microsystems, Inc.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
@ -75,6 +75,8 @@ EXTRA_DIST = README \
# List of directories containing test + result files and the
# related test data files that should be copied
# If you want to add a new suite, please check DEFAULT_SUITES in
# mysql-test-run.pl.
TEST_DIRS = t r include std_data std_data/parts collections \
std_data/ndb_backup50 std_data/ndb_backup51 \
std_data/ndb_backup51_data_be std_data/ndb_backup51_data_le \
@ -100,7 +102,9 @@ TEST_DIRS = t r include std_data std_data/parts collections \
suite/rpl_ndb suite/rpl_ndb/t suite/rpl_ndb/r \
suite/parts suite/parts/t suite/parts/r suite/parts/inc \
suite/innodb suite/innodb/t suite/innodb/r suite/innodb/include \
suite/sys_vars suite/sys_vars/t suite/sys_vars/inc suite/sys_vars/r
suite/sys_vars suite/sys_vars/t suite/sys_vars/inc suite/sys_vars/r \
suite/perfschema suite/perfschema/t suite/perfschema/r \
suite/perfschema/include
# Used by dist-hook and install-data-local to copy all
# test files into either dist or install directory

View File

@ -11,16 +11,28 @@ main.information_schema # Bug#47449 2009-09-19 alik main.inform
main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_multi_bug38499 times out sporadically
main.lock_multi_bug38691 @solaris # Bug#47792 2009-10-02 alik main.lock_multi_bug38691 times out sporadically on Solaris 10
main.log_tables # Bug#47924 2009-10-08 alik main.log_tables times out sporadically
main.outfile_loaddata @solaris # bug#46895 2010-01-20 alik Test "outfile_loaddata" fails (reproducible)
main.plugin # Bug#47146 Linking problem with example plugin when dtrace enabled
main.signal_demo3 @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
main.sp @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
perfschema.tampered_perfschema_table1 @windows # Bug#50478 2010-01-20 alik perfschema.tampered_perfschema_table1 fails sporadically on Windows and Solaris
perfschema.tampered_perfschema_table1 @solaris # Bug#50478 2010-01-20 alik perfschema.tampered_perfschema_table1 fails sporadically on Windows and Solaris
rpl.rpl_get_master_version_and_clock* # Bug#49191 2009-12-01 Daogang rpl_get_master_version_and_clock failed on PB2: COM_REGISTER_SLAVE failed
rpl.rpl_heartbeat_basic # BUG#43828 2009-10-22 luis fails sporadically
rpl.rpl_heartbeat_2slaves # BUG#43828 2009-10-22 luis fails sporadically
rpl.rpl_innodb_bug28430* # Bug#46029
rpl.rpl_innodb_bug30888* @solaris # Bug#47646 2009-09-25 alik rpl.rpl_innodb_bug30888 fails sporadically on Solaris
rpl.rpl_killed_ddl @windows # Bug#47638 2010-01-20 alik The rpl_killed_ddl test fails on Windows
rpl.rpl_plugin_load* @solaris # Bug#47146
rpl.rpl_row_sp011* @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
rpl.rpl_slave_load_remove_tmpfile* @windows # Bug#50474 2010-01-20 alik rpl_slave_load_remove_tmpfile failed on windows debug enabled binary
rpl.rpl_sync* @windows # Bug#50473 2010-01-20 alik rpl_sync fails on windows debug enabled binaries
rpl.rpl_timezone* # Bug#47017 2009-10-27 alik rpl_timezone fails on PB-2 with mismatch error
sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
# Declare all NDB-tests in ndb and rpl_ndb test suites experimental.
# Usually the test cases from ndb and rpl_ndb test suites are not run in PB,
# but they run by gcov.

View File

@ -1,5 +1,5 @@
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl,sys_vars
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --mysqld=--binlog-format=row --suite=rpl,binlog
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1

View File

@ -1,5 +1,5 @@
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=n_mix --vardir=var-n_mix --mysqld=--binlog-format=mixed --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=ps_row --vardir=var-ps_row --ps-protocol --mysqld=--binlog-format=row --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=embedded --vardir=var-emebbed --embedded --suite=main,binlog,innodb,federated,rpl,sys_vars,perfschema
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=rpl_binlog_row --vardir=var-rpl_binlog_row --mysqld=--binlog-format=row --suite=rpl,binlog
perl mysql-test-run.pl --timer --force --parallel=auto --experimental=collections/default.experimental --comment=funcs_1 --vardir=var-funcs_1 --suite=funcs_1

View File

@ -1,300 +0,0 @@
################################################################################
# Let
# - B be begin, C commit and R rollback.
# - T a statement that accesses and changes only transactional tables, i.e.
# T-tables
# - N a statement that accesses and changes only non-transactional tables,
# i.e, N-tables.
# - M be a mixed statement, i.e. a statement that updates both T- and
# N-tables.
# - M* be a mixed statement that fails while updating either a T
# or N-table.
# - N* be a statement that fails while updating a N-table.
#
# In this test case, when changes are logged as rows either in the RBR or MIXED
# modes, we check if a M* statement that happens early in a transaction is
# written to the binary log outside the boundaries of the transaction and
# wrapped up in a BEGIN/ROLLBACK. This is done to keep the slave consistent with
# the master as the rollback will keep the changes on N-tables and undo them on
# T-tables. In particular, we expect the following behavior:
#
# 1. B M* T C would generate in the binlog B M* R B T C.
# 2. B M M* C would generate in the binlog B M M* C.
# 3. B M* M* T C would generate in the binlog B M* R B M* R B T C.
#
# SBR is not considered in this test because a failing statement is written to
# the binary along with the error code such that a slave executes and rolls it
# back, thus undoing the effects on T-tables.
#
# Note that, in the first case, we are not preserving history from the master as
# we are introducing a rollback that never happened. However, this seems to be
# more acceptable than making the slave diverge. In the second case, the slave
# will diverge as the changes on T-tables that originated from the M statement
# are rolled back on the master but not on the slave. Unfortunately, we cannot
# simply roll the transaction back as this would undo any uncommitted changes
# on T-tables.
#
# We check two more cases. First, INSERT...SELECT* which produces the following
# results:
#
# 1. B T INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates in
# the binlog the following entries: "Nothing".
# 2. B INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates in
# the binlog the following entries: B INSERT M...SELECT* R.
#
# Finally, we also check if any N statement that happens early in a transaction
# (i.e. before any T or M statement) is written to the binary log outside the
# boundaries of the transaction. In particular, we expect the following
# behavior:
#
# 1. B N N T C would generate in the binlog B N C B N C B T C.
# 2. B N N T R would generate in the binlog B N C B N C B T R.
# 3. B N* N* T C would generate in the binlog B N R B N R B T C.
# 4. B N* N* T R would generate in the binlog B N R B N R B T R.
# 5. B N N T N T C would generate in the binlog B N C B N C B T N T C.
# 6. B N N T N T R would generate in the binlog the B N C B N C B T N T R.
#
# Such issues do not happen in SBR. In RBR and MBR, a full-fledged fix will be
# pushed after the WL#2687.
#
# Please, remove this test case after pushing WL#2687.
################################################################################
--echo ###################################################################################
--echo # CONFIGURATION
--echo ###################################################################################
CREATE TABLE nt_1 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
CREATE TABLE nt_2 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
CREATE TABLE tt_1 (a text, b int PRIMARY KEY) ENGINE = Innodb;
CREATE TABLE tt_2 (a text, b int PRIMARY KEY) ENGINE = Innodb;
DELIMITER |;
CREATE TRIGGER tr_i_tt_1_to_nt_1 BEFORE INSERT ON tt_1 FOR EACH ROW
BEGIN
INSERT INTO nt_1 VALUES (NEW.a, NEW.b);
END|
CREATE TRIGGER tr_i_nt_2_to_tt_2 BEFORE INSERT ON nt_2 FOR EACH ROW
BEGIN
INSERT INTO tt_2 VALUES (NEW.a, NEW.b);
END|
DELIMITER ;|
--echo ###################################################################################
--echo # CHECK HISTORY IN BINLOG
--echo ###################################################################################
--echo
--echo
--echo
--echo *** "B M* T C" with error in M* generates in the binlog the "B M* R B T C" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
INSERT INTO nt_1 VALUES ("new text 1", 1);
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES (USER(), 2), (USER(), 1);
INSERT INTO tt_2 VALUES ("new text 3", 3);
COMMIT;
--source include/show_binlog_events.inc
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
INSERT INTO tt_2 VALUES ("new text 4", 4);
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO nt_2 VALUES (USER(), 5), (USER(), 4);
INSERT INTO tt_2 VALUES ("new text 6", 6);
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B M M* T C" with error in M* generates in the binlog the "B M M* T C" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
INSERT INTO nt_1 VALUES ("new text 10", 10);
BEGIN;
INSERT INTO tt_1 VALUES ("new text 7", 7), ("new text 8", 8);
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES (USER(), 9), (USER(), 10);
INSERT INTO tt_2 VALUES ("new text 11", 11);
COMMIT;
--source include/show_binlog_events.inc
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
INSERT INTO tt_2 VALUES ("new text 15", 15);
BEGIN;
INSERT INTO nt_2 VALUES ("new text 12", 12), ("new text 13", 13);
--error ER_DUP_ENTRY
INSERT INTO nt_2 VALUES (USER(), 14), (USER(), 15);
INSERT INTO tt_2 VALUES ("new text 16", 16);
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B M* M* T C" with error in M* generates in the binlog the "B M* R B M* R B T C" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
INSERT INTO nt_1 VALUES ("new text 18", 18);
INSERT INTO nt_1 VALUES ("new text 20", 20);
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES (USER(), 17), (USER(), 18);
--error ER_DUP_ENTRY
INSERT INTO tt_1 VALUES (USER(), 19), (USER(), 20);
INSERT INTO tt_2 VALUES ("new text 21", 21);
COMMIT;
--source include/show_binlog_events.inc
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
INSERT INTO tt_2 VALUES ("new text 23", 23);
INSERT INTO tt_2 VALUES ("new text 25", 25);
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO nt_2 VALUES (USER(), 22), (USER(), 23);
--error ER_DUP_ENTRY
INSERT INTO nt_2 VALUES (USER(), 24), (USER(), 25);
INSERT INTO tt_2 VALUES ("new text 26", 26);
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B T INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates
--echo *** in the binlog the following entries: "Nothing".
--echo *** There is a bug in that will be fixed after WL#2687. Please, check BUG#47175 for further details.
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
TRUNCATE TABLE nt_2;
TRUNCATE TABLE tt_2;
INSERT INTO tt_2 VALUES ("new text 7", 7);
BEGIN;
INSERT INTO tt_2 VALUES ("new text 27", 27);
--error ER_DUP_ENTRY
INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
INSERT INTO tt_2 VALUES ("new text 28", 28);
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B INSERT M..SELECT* C" with an error in INSERT M...SELECT* generates
--echo *** in the binlog the following entries: "B INSERT M..SELECT* R".
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
TRUNCATE TABLE nt_2;
TRUNCATE TABLE tt_2;
INSERT INTO tt_2 VALUES ("new text 7", 7);
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B N N T C" generates in the binlog the "B N C B N C B T C" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
TRUNCATE TABLE nt_1;
TRUNCATE TABLE tt_2;
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 1);
INSERT INTO nt_1 VALUES (USER(), 2);
INSERT INTO tt_2 VALUES (USER(), 3);
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B N N T R" generates in the binlog the "B N C B N C B T R" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 4);
INSERT INTO nt_1 VALUES (USER(), 5);
INSERT INTO tt_2 VALUES (USER(), 6);
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B N* N* T C" with error in N* generates in the binlog the "B N R B N R B T C" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO nt_1 VALUES (USER(), 7), (USER(), 1);
--error ER_DUP_ENTRY
INSERT INTO nt_1 VALUES (USER(), 8), (USER(), 1);
INSERT INTO tt_2 VALUES (USER(), 9);
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B N* N* T R" with error in N* generates in the binlog the "B N R B N R B T R" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
BEGIN;
--error ER_DUP_ENTRY
INSERT INTO nt_1 VALUES (USER(), 10), (USER(), 1);
--error ER_DUP_ENTRY
INSERT INTO nt_1 VALUES (USER(), 11), (USER(), 1);
INSERT INTO tt_2 VALUES (USER(), 12);
ROLLBACK;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B N N T N T C" generates in the binlog the "B N C B N C B T N T C" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 13);
INSERT INTO nt_1 VALUES (USER(), 14);
INSERT INTO tt_2 VALUES (USER(), 15);
INSERT INTO nt_1 VALUES (USER(), 16);
INSERT INTO tt_2 VALUES (USER(), 17);
COMMIT;
--source include/show_binlog_events.inc
--echo
--echo
--echo
--echo *** "B N N T N T R" generates in the binlog the "B N C B N C B T N T R" entries
--echo
let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 18);
INSERT INTO nt_1 VALUES (USER(), 19);
INSERT INTO tt_2 VALUES (USER(), 20);
INSERT INTO nt_1 VALUES (USER(), 21);
INSERT INTO tt_2 VALUES (USER(), 22);
ROLLBACK;
--source include/show_binlog_events.inc
--echo ###################################################################################
--echo # CLEAN
--echo ###################################################################################
DROP TABLE tt_1;
DROP TABLE tt_2;
DROP TABLE nt_1;
DROP TABLE nt_2;

View File

@ -6,6 +6,8 @@
-- source include/have_blackhole.inc
-- source include/have_log_bin.inc
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
# The server need to be started in $MYSQLTEST_VARDIR since it
# uses ../../std_data/
-- source include/uses_vardir.inc

View File

@ -8,6 +8,7 @@
-- source include/have_log_bin.inc
-- source include/have_innodb.inc
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
--disable_warnings
drop table if exists t1, t2;
@ -323,23 +324,24 @@ let $MYSQLD_DATADIR= `select @@datadir`;
# and does not make slave to stop)
if (`select @@binlog_format = 'ROW'`)
{
--exec $MYSQL_BINLOG --start-position=525 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
--echo This does not matter in ROW mode as the rolled back changes do not contain transactional changes as these
--echo were previously flushed upon committing/rolling back each statement.
}
if (`select @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
{
--exec $MYSQL_BINLOG --start-position=556 $MYSQLD_DATADIR/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output
}
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval select
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
is not null;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval select
@a like "%#%error_code=0%ROLLBACK\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" OR
@a like "%#%error_code=0%ROLLBACK\\r\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
@a not like "%#%error_code=%error_code=%";
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval select
(@a:=load_file("$MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
is not null;
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
eval select
@a like "%#%error_code=0%ROLLBACK\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" OR
@a like "%#%error_code=0%ROLLBACK\\r\\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
@a not like "%#%error_code=%error_code=%";
}
drop table t1, t2;
#

View File

@ -0,0 +1,52 @@
# Helper file to perform one insert of a value into a table with
# different types on master and slave. The file will insert the
# result into the type_conversions table *on the slave* to get a
# summary of failing and succeeding tests.
# Input:
# $source_type Type on the master
# $target_type Type on the slave
# $source_value Value on the master (inserted into the table)
# $target_value Value on the slave (expected value in the table
# on the slave)
# $can_convert True if conversion shall work, false if it
# shall generate an error
connection master;
disable_warnings;
DROP TABLE IF EXISTS t1;
enable_warnings;
eval CREATE TABLE t1 (a $source_type);
sync_slave_with_master;
eval ALTER TABLE t1 MODIFY a $target_type;
connection master;
eval INSERT INTO t1 VALUES($source_value);
if ($can_convert) {
sync_slave_with_master;
eval SELECT a = $target_value into @compare FROM t1;
eval INSERT INTO type_conversions SET
Source = "$source_type",
Target = "$target_type",
Flags = @@slave_type_conversions,
On_Master = $source_value,
Expected = $target_value,
Compare = @compare;
UPDATE type_conversions
SET On_Slave = (SELECT a FROM t1)
WHERE TestNo = LAST_INSERT_ID();
}
if (!$can_convert) {
connection slave;
wait_for_slave_to_stop;
let $error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
eval INSERT INTO type_conversions SET
Source = "$source_type",
Target = "$target_type",
Flags = @@slave_type_conversions,
On_Master = $source_value,
Error = "$error";
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
}

View File

@ -0,0 +1,400 @@
# ==== Purpose ====
#
# Creates a stored routine, stored function, trigger, view, or
# prepared statement (commonly referred to as "recursive construct")
# that invokes a given unsafe statement.
#
# Then, it invokes the created recursive construct several times:
#
# - With SQL_LOG_BIN = 1 and binlog_format = STATEMENT, to verify
# that it gives a warning.
#
# - With SQL_LOG_BIN = 0 and binlog_format = STATEMENT, to verify that
# there is no warning and nothing is logged.
#
# - With SQL_LOG_BIN = 1 and binlog_format = MIXED, to verify that it
# writes row events to the binlog.
#
# - In some cases, the recursive construct can be invoked so that it
# has no side-effects but returns a value that may be
# nondeterministic. An example is a function that returns UUID().
# The function does not have side effects but its a return value
# that may differ on slave. Such statements are invoked so that
# the return value is discarded (e.g., SELECT func()), with
# SQL_LOG_BIN = 1 and binlog_format = STATEMENT. In this case, no
# warning should be given and nothing should be written to the
# binlog.
#
# This is an auxiliary file particularly targeted to being used by the
# test binlog_unsafe. In this context, the purpose is to check how
# warnings for unsafe statements are propagated in recursive
# constructs.
#
# The statement to invoke ("input") is described using mtr variables,
# and the resulting recursive construct ("output") is stored in mtr
# variables in a similar fashion. To create several levels of nested
# recursive constructs, source this file once, then copy the values of
# appropriate output variables to the input variables, and then source
# this file again.
#
#
# ==== Usage ====
#
# See binlog_unsafe for an example of how to use this file.
#
# let $CRC_ARG_level= <level>;
# let $CRC_ARG_type= <type>;
# let $CRC_ARG_stmt_sidef= <stmt>;
# let $CRC_ARG_value= <stmt>;
# let $CRC_ARG_sel_retval= <stmt>;
# let $CRC_ARG_sel_sidef= <stmt>;
# let $CRC_ARG_desc= <desc>;
# source extra/rpl_tests/create_recursive_construct.inc;
# let $my_stmt_sidef= $CRC_RET_stmt_sidef;
# let $my_value= $CRC_RET_value;
# let $my_sel_sidef= $CRC_RET_sel_sidef;
# let $my_sel_retval= $CRC_RET_sel_retval;
# let $my_drop= $CRC_RET_drop;
# let $my_is_toplevel= $CRC_RET_top_is_toplevel;
# let $my_desc= $CRC_RET_desc;
#
# $CRC_ARG_* are used as input parameters (arguments) to this file:
#
# $CRC_ARG_level is the recursion depth: 1 for the innermost
# statement created, 2 for a statement that invokes a statement on
# level 1, etc.
#
# $CRC_ARG_type is an integer from 0 to 6, indicating what type of
# statement shall be created:
# 0 - Create a stored function where the return value depends on
# the value of the given statement.
# 1 - Create a stored function that invokes the given statement as
# a side-effect but may not return a value that depends on it.
# 2 - Create a stored routine that invokes the given statement.
# 3 - Create a trigger (on table trigger_table_$CRC_ARG_level) that
# invokes the given statement.
# 4 - Create a view that returns a value that depends on the value
# of the given statement.
# 5 - Create a view that invokes the given statement but may return
# a value that does not depend on it.
# 6 - Create a prepared statement that invokes the given statement.
#
# $CRC_ARG_stmt_sidef is the statement to invoke. It should be a
# statement that can be invoked on its own (not sub-statement),
# which causes something unsafe to be written to the binlog.
#
# $CRC_ARG_value is a sub-statement holding the value of the given
# statement. Can be empty if the given statement does not have a
# value. Typically, this is non-empty if the given statement is a
# function call or user variable, but not if it is a stored routine
# call, INSERT, SELECT, etc (because none of them has a value).
# $CRC_ARG_value is used only when $CRC_ARG_type=6.
#
# $CRC_ARG_sel_sidef is a SELECT sub-statement that invokes the
# statement as a side-effect, but returns a result set that may not
# depend on the statement. Can be empty if the statement cannot
# produce a result set from a SELECT. $CRC_ARG_sel_sidef is used
# only if $CRC_ARG_type=2
#
# $CRC_ARG_sel_retval is a SELECT sub-statement that does not have
# side-effects, but returns a result set that depends on the unsafe
# statement. Can be empty if the statement cannot be invoked from a
# SELECT. $CRC_ARG_sel_retval is used only if $CRC_ARG_type=3.
#
# $CRC_ARG_desc is a human-readable description of the statement to
# invoke.
#
# $CRC_RET_* are used as output parameters (return values) of this
# file:
#
# $CRC_RET_stmt_sidef is a statement invoking the resulting recursive
# construct.
#
# $CRC_RET_value is a sub-statement invoking the resulting recursive
# construct and returning the value of the recursive construct.
# This is the empty string if the resulting recursive construct does
# not have a value. In particular, this is non-empty only if
# $CRC_ARG_value=7.
#
# $CRC_RET_sel_sidef is a SELECT sub-statement that invokes the
# resulting recursive construct as a side-effect but where the
# result set may not depend on the recursive construct. This is the
# empty string if the recursive construct cannot be invoked from a
# SELECT. In particular, this is non-empty only if $CRC_ARG_value=6
# or $CRC_ARG_value=2.
#
# $CRC_RET_sel_retval is a SELECT sub-statement that does not have
# side-effects, but returns a result set depending on the unsafe
# statement. This is the empty string if the recursive construct
# cannot produce a result set from a SELECT. In particular, this is
# non-empty only if $CRC_ARG_value=7 or $CRC_ARG_value=3.
#
# $CRC_RET_drop is a statement that drops the created object. I.e.,
# it is one of 'DROP FUNCTION <func>', 'DROP PROCEDURE <proc>', etc.
#
# $CRC_RET_top_is_toplevel is 0 normally, or 1 if the resulting
# recursive construct can only be called from a top-level statement.
# In particular, this is 1 only when $CRC_ARG_value=1, because
# prepared statements cannot be invoked from other recursive
# constructs.
#
# $CRC_RET_desc is a text string that describes the invokation of
# the recursive construct in a human-readable fashion.
#
# Assumptions
#
# Before sourcing this file with $CRC_ARG_level=X, you need to
# create three tables: tX, taX and trigger_table_X. These are used
# as auxiliary tables.
#--echo debug: >>>>ENTER create_recursive_construct
#--echo debug: level=$CRC_ARG_level
#--echo debug: type=$CRC_ARG_type
#--echo debug: stmt_sidef=$CRC_ARG_stmt_sidef
#--echo debug: value=$CRC_ARG_value
#--echo debug: sel_retval=$CRC_ARG_sel_retval
#--echo debug: sel_sidef=$CRC_ARG_sel_sidef
--let $CRC_RET_stmt_sidef=
--let $CRC_RET_value=
--let $CRC_RET_sel_retval=
--let $CRC_RET_sel_sidef=
--let $CRC_RET_drop=
--let $CRC_RET_is_toplevel= 1
--let $CRC_RET_desc=
--let $CRC_name=
--let $CRC_create=
######## func_retval ########
if (`SELECT $CRC_ARG_type = 0 AND '$CRC_ARG_value' != ''`) {
# It will be safe to call this function and discard the return
# value, but it will be unsafe to use return value (e.g., in
# INSERT...SELECT).
--let $CRC_name= func_retval_$CRC_ARG_level
--let $CRC_create= CREATE FUNCTION $CRC_name() RETURNS VARCHAR(100) BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); RETURN $CRC_ARG_value; END
--let $CRC_RET_stmt_sidef= INSERT INTO t$CRC_ARG_level VALUES ($CRC_name())
--let $CRC_RET_value= $CRC_name()
--let $CRC_RET_sel_sidef=
--let $CRC_RET_sel_retval= SELECT $CRC_name()
--let $CRC_RET_drop= DROP FUNCTION $CRC_name
--let $CRC_RET_is_toplevel= 0
--let $CRC_RET_desc= function $CRC_name returning value from $CRC_ARG_desc
}
######## func_sidef ########
if (`SELECT $CRC_ARG_type = 1`) {
# It will be unsafe to call func even if you discard return value.
--let $CRC_name= func_sidef_$CRC_ARG_level
--let $CRC_create= CREATE FUNCTION $CRC_name() RETURNS VARCHAR(100) BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); $CRC_ARG_stmt_sidef; RETURN 0; END
--let $CRC_RET_stmt_sidef= INSERT INTO t$CRC_ARG_level SELECT $CRC_name()
--let $CRC_RET_value=
--let $CRC_RET_sel_retval=
--let $CRC_RET_sel_sidef= SELECT $CRC_name()
--let $CRC_RET_drop= DROP FUNCTION $CRC_name
--let $CRC_RET_is_toplevel= 0
--let $CRC_RET_desc= function $CRC_name invoking $CRC_ARG_desc
}
######## proc ########
if (`SELECT $CRC_ARG_type = 2`) {
# It will be unsafe to call this procedure.
--let $CRC_name= proc_$CRC_ARG_level
--let $CRC_create= CREATE PROCEDURE $CRC_name() BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); $CRC_ARG_stmt_sidef; END
--let $CRC_RET_stmt_sidef= CALL $CRC_name()
--let $CRC_RET_value=
--let $CRC_RET_sel_retval=
--let $CRC_RET_sel_sidef=
--let $CRC_RET_drop= DROP PROCEDURE $CRC_name
--let $CRC_RET_is_toplevel= 0
--let $CRC_RET_desc= procedure $CRC_name invoking $CRC_ARG_desc
}
######## trig ########
if (`SELECT $CRC_ARG_type = 3`) {
# It will be unsafe to invoke this trigger.
--let $CRC_name= trig_$CRC_ARG_level
--let $CRC_create= CREATE TRIGGER $CRC_name BEFORE INSERT ON trigger_table_$CRC_ARG_level FOR EACH ROW BEGIN INSERT INTO ta$CRC_ARG_level VALUES (47); $CRC_ARG_stmt_sidef; END
--let $CRC_RET_stmt_sidef= INSERT INTO trigger_table_$CRC_ARG_level VALUES (1)
--let $CRC_RET_value=
--let $CRC_RET_sel_retval=
--let $CRC_RET_sel_sidef=
--let $CRC_RET_drop= DROP TRIGGER $CRC_name
--let $CRC_RET_is_toplevel= 0
--let $CRC_RET_desc= trigger $CRC_name invoking $CRC_ARG_desc
}
######## view_retval ########
if (`SELECT $CRC_ARG_type = 4 AND '$CRC_ARG_sel_retval' != ''`) {
# It will be safe to select from this view if you discard the result
# set, but unsafe to use result set (e.g., in INSERT..SELECT).
--let $CRC_name= view_retval_$CRC_ARG_level
--let $CRC_create= CREATE VIEW $CRC_name AS $CRC_ARG_sel_retval
--let $CRC_RET_stmt_sidef= INSERT INTO t$CRC_ARG_LEVEL SELECT * FROM $CRC_name
--let $CRC_RET_value=
--let $CRC_RET_sel_retval= SELECT * FROM $CRC_name
--let $CRC_RET_sel_sidef=
--let $CRC_RET_drop= DROP VIEW $CRC_name
--let $CRC_RET_is_toplevel= 0
--let $CRC_RET_desc= view $CRC_name returning value from $CRC_ARG_desc
}
######## view_sidef ########
if (`SELECT $CRC_ARG_type = 5 AND '$CRC_ARG_sel_sidef' != ''`) {
# It will be unsafe to select from this view, even if you discard
# the return value.
--let $CRC_name= view_sidef_$CRC_ARG_level
--let $CRC_create= CREATE VIEW $CRC_name AS $CRC_ARG_sel_sidef
--let $CRC_RET_stmt_sidef= INSERT INTO t$CRC_ARG_level SELECT * FROM $CRC_name
--let $CRC_RET_value=
--let $CRC_RET_sel_retval=
--let $CRC_RET_sel_sidef= SELECT * FROM $CRC_name
--let $CRC_RET_drop= DROP VIEW $CRC_name
--let $CRC_RET_is_toplevel= 0
--let $CRC_RET_desc= view $CRC_name invoking $CRC_ARG_desc
}
######## prep ########
if (`SELECT $CRC_ARG_type = 6`) {
# It will be unsafe to execute this prepared statement
--let $CRC_name= prep_$CRC_ARG_level
--let $CRC_create= PREPARE $CRC_name FROM "$CRC_ARG_stmt_sidef"
--let $CRC_RET_stmt_sidef= EXECUTE $CRC_name
--let $CRC_RET_value=
--let $CRC_RET_sel_retval=
--let $CRC_RET_sel_sidef=
--let $CRC_RET_drop= DROP PREPARE $CRC_name
--let $CRC_RET_is_toplevel= 1
--let $CRC_RET_desc= prepared statement $CRC_name invoking $CRC_ARG_desc
}
######## no recursive construct: just return the given statement ########
if (`SELECT $CRC_ARG_type = 7`) {
# CRC_ARG_type=7 is a special case. We just set $CRC_RET_x =
# $CRC_ARG_x. This way, the $CRC_ARG_stmt gets executed directly
# (below). In binlog_unsafe.test, it is used to invoke the unsafe
# statement created in the outermost loop directly, without
# enclosing it in a recursive construct.
--let $CRC_RET_stmt_sidef= $CRC_ARG_stmt_sidef
--let $CRC_RET_value= $CRC_ARG_value
--let $CRC_RET_sel_retval= $CRC_ARG_sel_retval
--let $CRC_RET_sel_sidef= $CRC_ARG_sel_sidef
--let $CRC_RET_drop=
--let $CRC_RET_is_toplevel= 1
--let $CRC_RET_desc= $CRC_ARG_desc
}
######## execute! ########
if (`SELECT '$CRC_RET_stmt_sidef' != ''`) {
--echo
--echo Invoking $CRC_RET_desc.
if (`SELECT '$CRC_create' != ''`) {
--eval $CRC_create
}
--echo * binlog_format = STATEMENT: expect $CRC_ARG_expected_number_of_warnings warnings.
--eval $CRC_RET_stmt_sidef
--let $n_warnings= `SHOW COUNT(*) WARNINGS`
if (`SELECT '$n_warnings' != '$CRC_ARG_expected_number_of_warnings'`) {
--echo ******** Failure! Expected $CRC_ARG_expected_number_of_warnings warnings, got $n_warnings warnings. ********
SHOW WARNINGS;
SHOW BINLOG EVENTS;
--die Wrong number of warnings.
}
# These queries are run without query log, to make result file more
# readable. Debug info is only printed if something abnormal
# happens.
--disable_query_log
--echo * SQL_LOG_BIN = 0: expect nothing logged and no warning.
SET SQL_LOG_BIN = 0;
RESET MASTER;
--eval $CRC_RET_stmt_sidef
--let $n_warnings= `SHOW COUNT(*) WARNINGS`
if (`SELECT '$n_warnings' != '0'`) {
--echo ******** Failure! Expected 0 warnings, got $n_warnings warnings. ********
SHOW WARNINGS;
SHOW BINLOG EVENTS;
--die Wrong number of warnings.
}
--let $binlog_event= query_get_value(SHOW BINLOG EVENTS, Event_type, 2)
if (`SELECT '$binlog_event' != 'No such row'`) {
--enable_query_log
--echo ******** Failure! Something was written to the binlog despite SQL_LOG_BIN=0 ********
SHOW BINLOG EVENTS;
--die Binlog not empty
}
SET SQL_LOG_BIN = 1;
--echo * binlog_format = MIXED: expect row events in binlog and no warning.
SET binlog_format = MIXED;
RESET MASTER;
--eval $CRC_RET_stmt_sidef
--let $n_warnings= `SHOW COUNT(*) WARNINGS`
if (`SELECT '$n_warnings' != '0'`) {
--echo ******** Failure! Expected 0 warnings, got $n_warnings warnings. ********
SHOW WARNINGS;
SHOW BINLOG EVENTS;
--die Warnings printed
}
# The first event is format_description, the second is
# Query_event('BEGIN'), and the third should be our Table_map.
--let $event_type= query_get_value(SHOW BINLOG EVENTS, Event_type, 3)
if (`SELECT '$event_type' != 'Table_map'`) {
--enable_query_log
--echo ******** Failure! Event number 3 was a '$event_type', not a 'Table_map'. ********
# Currently, there is a bug causing some statements to be logged
# partially in statement format. Hence, we don't fail here, we
# just print the events (masking out nondeterministic components
# of the output) and continue. When binloggging works perfectly,
# we should instead execute:
#--enable_query_log
#SHOW BINLOG EVENTS;
#--die Wrong events in binlog.
# Here, we should really source
# include/show_binlog_events.inc. But due to BUG#41913, that
# doesn't work, and we have to inline the entire file here. Sigh
# :-(
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR 107 <binlog_start>
--replace_column 2 # 4 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/
--eval SHOW BINLOG EVENTS FROM 107
--disable_query_log
}
SET binlog_format = STATEMENT;
--enable_query_log
}
# Invoke created object, discarding the return value. This should not
# give any warning.
if (`SELECT '$CRC_RET_sel_retval' != ''`) {
--echo * Invoke statement so that return value is dicarded: expect no warning.
--disable_result_log
--eval $CRC_RET_sel_retval
--enable_result_log
# Currently, due to a bug, we do get warnings here, so we don't
# fail. When the bug is fixed, we should execute the following.
#--let $n_warnings= `SHOW COUNT(*) WARNINGS`
#if (`SELECT '$n_warnings' != '0'`) {
# --enable_query_log
# --echo Failure! Expected 0 warnings, got $n_warnings warnings.
# SHOW WARNINGS;
# SHOW BINLOG EVENTS;
# --die Wrong number of warnings.
#}
}
#--echo debug: <<<<EXIT create_recursive_construct
#--echo debug: stmt_sidef=$CRC_RET_stmt_sidef
#--echo debug: value=$CRC_RET_value
#--echo debug: sel_retval=$CRC_RET_sel_retval
#--echo debug: sel_sidef=$CRC_RET_sel_sidef
#--echo debug: drop=$CRC_RET_drop
#--echo debug: is_toplevel=$CRC_RET_is_toplevel
#--echo debug: desc=$CRC_RET_desc

View File

@ -22,13 +22,7 @@
#
########################################################################################
########################################################################################
# Configuring the environment
########################################################################################
--source include/have_innodb.inc
--source include/master-slave.inc
--source include/not_embedded.inc
--source include/not_windows.inc
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
CREATE TABLE t1(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=Innodb;
CREATE TABLE t2(a INT PRIMARY KEY, data VARCHAR(30000)) ENGINE=MyIsam;
@ -50,30 +44,18 @@ eval INSERT INTO t1 (a, data) VALUES (1,
--enable_query_log
--echo *** Single statement on non-transactional table ***
--echo *** After WL#2687 the difference between STATEMENT/MIXED and ROW will not exist. ***
--disable_query_log
--disable_warnings
if (`SELECT @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
{
eval INSERT INTO t2 (a, data) VALUES (2,
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
eval INSERT INTO t2 (a, data) VALUES (2,
CONCAT($data, $data, $data, $data, $data, $data));
--echo Got one of the listed errors
}
if (`SELECT @@binlog_format = 'ROW'`)
{
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
eval INSERT INTO t2 (a, data) VALUES (2,
CONCAT($data, $data, $data, $data, $data, $data));
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE SQL_THREAD;
--source include/wait_for_slave_sql_to_start.inc
}
--enable_warnings
--enable_query_log
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE SQL_THREAD;
--source include/wait_for_slave_sql_to_start.inc
connection master;
--disable_query_log
@ -86,7 +68,6 @@ eval INSERT INTO t2 (a, data) VALUES (5, $data);
--enable_query_log
--echo *** Single statement on both transactional and non-transactional tables. ***
--echo *** After WL#2687 we will be able to change the order of the tables. ***
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
eval UPDATE t2, t1 SET t2.data = CONCAT($data, $data, $data, $data),
@ -95,13 +76,25 @@ eval UPDATE t2, t1 SET t2.data = CONCAT($data, $data, $data, $data),
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
if (`SELECT @@binlog_format = 'STATEMENT'`)
{
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
}
if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
{
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 2;
}
START SLAVE SQL_THREAD;
--source include/wait_for_slave_sql_to_start.inc
connection master;
#--echo ########################################################################################
#--echo # 2 - BEGIN - IMPLICIT COMMIT by DDL
#--echo ########################################################################################
let $diff_statement= SELECT * FROM t1;
--source include/diff_master_slave.inc
--echo ########################################################################################
--echo # 2 - BEGIN - IMPLICIT COMMIT by DDL
--echo ########################################################################################
connection master;
TRUNCATE TABLE t1;
@ -149,14 +142,13 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (21, 's');
--enable_query_log
if (`SELECT @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
if (`SELECT @@binlog_format = 'STATEMENT'`)
{
--disable_query_log
CREATE TABLE t4 SELECT * FROM t1;
--enable_query_log
--echo Got one of the listed errors
}
if (`SELECT @@binlog_format = 'ROW'`)
if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
{
--disable_query_log
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
@ -186,6 +178,17 @@ BEGIN;
CREATE TABLE t5 (a int);
--enable_query_log
if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'` )
{
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE SQL_THREAD;
--source include/wait_for_slave_sql_to_start.inc
connection master;
}
let $diff_statement= SELECT * FROM t1;
--source include/diff_master_slave.inc
@ -341,16 +344,30 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (1, $data);
--eval INSERT INTO t1 (a, data) VALUES (2, $data);
--eval INSERT INTO t2 (a, data) VALUES (3, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (4, $data);
if (`SELECT @@binlog_format = 'STATEMENT'`)
{
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (4, $data);
}
if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
{
--eval INSERT INTO t1 (a, data) VALUES (4, $data);
}
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (5, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (6, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (7, $data);
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval UPDATE t2 SET data= CONCAT($data, $data);
if (`SELECT @@binlog_format = 'STATEMENT'`)
{
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval UPDATE t2 SET data= CONCAT($data, $data);
}
if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
{
--eval UPDATE t2 SET data= CONCAT($data, $data);
}
--eval INSERT INTO t1 (a, data) VALUES (8, 's');
--eval INSERT INTO t1 (a, data) VALUES (9, 's');
--eval INSERT INTO t2 (a, data) VALUES (10, 's');
@ -363,19 +380,38 @@ BEGIN;
--eval INSERT INTO t1 (a, data) VALUES (15, $data);
--eval INSERT INTO t1 (a, data) VALUES (16, $data);
--eval INSERT INTO t2 (a, data) VALUES (17, $data);
if (`SELECT @@binlog_format = 'STATEMENT'`)
{
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (18, $data);
}
if (`SELECT @@binlog_format = 'ROW' || @@binlog_format = 'MIXED'`)
{
--eval INSERT INTO t1 (a, data) VALUES (18, $data);
}
--error ER_TRANS_CACHE_FULL, ER_ERROR_ON_WRITE
--eval INSERT INTO t1 (a, data) VALUES (18, $data);
--eval INSERT INTO t1 (a, data) VALUES (19, $data);
--enable_query_log
COMMIT;
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
if (`SELECT @@binlog_format = 'STATEMENT'`)
{
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE SQL_THREAD;
--source include/wait_for_slave_sql_to_start.inc
connection master;
}
let $diff_statement= SELECT * FROM t1;
--source include/diff_master_slave.inc
--echo ########################################################################################
--echo # CLEAN
--echo ########################################################################################
--disable_warnings
connection master;
DROP TABLE t1;
DROP TABLE t2;
@ -384,12 +420,4 @@ DROP TABLE IF EXISTS t4;
DROP TABLE IF EXISTS t5;
DROP TABLE IF EXISTS t6;
DROP PROCEDURE p1;
connection slave;
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
DROP TABLE IF EXISTS t4;
DROP TABLE IF EXISTS t5;
DROP TABLE IF EXISTS t6;
DROP PROCEDURE p1;
--enable_warnings
sync_slave_with_master;

View File

@ -36,6 +36,9 @@ sync_slave_with_master;
STOP SLAVE;
RESET SLAVE;
SET @saved_slave_type_conversions = @@slave_type_conversions;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
eval CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(4) DEFAULT 'TEST')
@ -62,6 +65,8 @@ SELECT * FROM t1 ORDER BY a;
sync_slave_with_master;
SELECT * FROM t1 ORDER BY a;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
--echo *** Drop t1 ***
connection master;
DROP TABLE t1;
@ -97,9 +102,8 @@ SELECT * FROM t2 ORDER BY a;
connection slave;
START SLAVE;
source include/wait_for_slave_sql_to_stop.inc;
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
STOP SLAVE;
RESET SLAVE;
SELECT * FROM t2 ORDER BY a;
@ -146,13 +150,12 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t3 () VALUES(@b1,2,'Kyle, TEX'),(@b1,1,'JOE AUSTIN'),(@b1,4,'QA TESTING');
--echo ********************************************
--echo *** Expect slave to fail with Error 1522 ***
--echo *** Expect slave to fail with Error 1677 ***
--echo ********************************************
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@ -191,13 +194,12 @@ INSERT INTO t4 () VALUES(100.22,2,'Kyle, TEX'),(200.26,1,'JOE AUSTIN'),
(30000.22,4,'QA TESTING');
--echo ********************************************
--echo *** Expect slave to fail with Error 1522 ***
--echo *** Expect slave to fail with Error 1677 ***
--echo ********************************************
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@ -236,13 +238,12 @@ INSERT INTO t5 () VALUES(1,'Kyle',200.23,1,'b1b1',23.00098),
(2,'JOE',300.01,0,'b2b2',1.0000009);
--echo ********************************************
--echo *** Expect slave to fail with Error 1522 ***
--echo *** Expect slave to fail with Error 1677 ***
--echo ********************************************
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@ -282,13 +283,12 @@ INSERT INTO t6 () VALUES(1,'Kyle',200.23,1),
(2,'JOE',300.01,0);
--echo ********************************************
--echo *** Expect slave to fail with Error 1522 ***
--echo *** Expect slave to fail with Error 1677 ***
--echo ********************************************
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=3;
#START SLAVE;
@ -491,13 +491,12 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t10 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
--echo ********************************************
--echo *** Expect slave to fail with Error 1522 ***
--echo *** Expect slave to fail with Error 1677 ***
--echo ********************************************
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@ -515,7 +514,7 @@ sync_slave_with_master;
--echo *** Create t11 on slave ***
STOP SLAVE;
RESET SLAVE;
eval CREATE TABLE t11 (a INT KEY, b BLOB, f TEXT,
eval CREATE TABLE t11 (a INT KEY, b BLOB, f INT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=$engine_type;
--echo *** Create t11 on Master ***
@ -535,13 +534,12 @@ set @b1 = concat(@b1,@b1);
INSERT INTO t11 () VALUES(1,@b1,'Kyle'),(2,@b1,'JOE'),(3,@b1,'QA');
--echo ********************************************
--echo *** Expect slave to fail with Error 1522 ***
--echo *** Expect slave to fail with Error 1677 ***
--echo ********************************************
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;
@ -811,9 +809,8 @@ ALTER TABLE t15 ADD COLUMN c6 INT AFTER c5;
--echo ********************************************
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
START SLAVE;
@ -918,13 +915,12 @@ connection master;
INSERT INTO t17 () VALUES(9223372036854775807,2,'Kyle, TEX');
--echo ********************************************
--echo *** Expect slave to fail with Error 1522 ***
--echo *** Expect slave to fail with Error 1677 ***
--echo ********************************************
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 4 # 7 # 8 # 9 # 16 # 22 # 23 # 33 # 35 # 36 #
--query_vertical SHOW SLAVE STATUS
--let $errno= query_get_value("SHOW SLAVE STATUS", Last_SQL_Errno, 1)
--echo Slave failed with Error $errno
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=2;
START SLAVE;

View File

@ -20,19 +20,15 @@ rename table t1 to t5, t2 to t1;
# first don't write it to the binlog, to test the NO_WRITE_TO_BINLOG keyword.
flush no_write_to_binlog tables;
# Check that it's not in the binlog.
--replace_result $SERVER_VERSION SERVER_VERSION
--replace_column 2 # 5 #
--replace_regex /table_id: [0-9]+/table_id: #/
eval SHOW BINLOG EVENTS FROM $rename_event_pos ;
let $binlog_start= $rename_event_pos;
source include/show_binlog_events.inc;
# Check that the master is not confused.
select * from t3;
# This FLUSH should go into the binlog to not confuse the slave.
flush tables;
# Check that it's in the binlog.
--replace_result $SERVER_VERSION SERVER_VERSION
--replace_column 2 # 5 #
--replace_regex /table_id: [0-9]+/table_id: #/
eval SHOW BINLOG EVENTS FROM $rename_event_pos ;
let $binlog_start= $rename_event_pos;
source include/show_binlog_events.inc;
sync_slave_with_master;
# Check that the slave is not confused.

View File

@ -47,7 +47,6 @@ insert into t1 set b=1;
insert into t2 set a=1, b=1;
set foreign_key_checks=0;
set @@session.binlog_format=row;
delete from t1;
--echo must sync w/o a problem (could not with the buggy code)

View File

@ -0,0 +1,656 @@
################################################################################
# In this test case, we verify if some DDL statements implicitly commit a
# transaction and are written directly to the binary log without going
# through either the Statement- or Transactional-Cache.
#
# As any statement that goes through a cache is written to the binary log
# wrapped in a BEGIN...COMMIT, we proceed as follows:
#
# - create a transaction and insert some values into a transactional table.
# - execute a DDL statement that is supposed to implicitly commit the previous
# transaction.
# - Check in the binary log for a COMMIT mark which is supposed to be written
# before the DDL statement.
# - Check in the binary log if the DDL is not wrapped by a BEGIN..COMMIT.
#
# For further details, please, read WL#2687 and WL#5072.
################################################################################
--echo #########################################################################
--echo # CONFIGURATION
--echo #########################################################################
connection master;
eval CREATE TABLE tt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = $engine;
eval CREATE TABLE tt_2 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = $engine;
eval CREATE TABLE nt_1 (ddl_case INT, PRIMARY KEY(ddl_case)) ENGINE = MyIsam;
INSERT INTO tt_1(ddl_case) VALUES(0);
INSERT INTO tt_2(ddl_case) VALUES(0);
--echo #########################################################################
--echo # CHECK IMPLICT COMMIT
--echo #########################################################################
SET AUTOCOMMIT= 0;
let $ddl_cases= 41;
while (`SELECT $ddl_cases >= 1`)
{
--echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
let $in_temporary= "no";
let $ok= "yes";
#
# In SBR and MIXED modes, the commit event is usually the third event in the
# binary log:
#
# 1: BEGIN
# 2: INSERT
# 3: COMMIT
# 4: DDL EVENT which triggered the previous commmit.
#
if (`select @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
{
let $commit_event_row_number= 3;
}
#
# In RBR mode, the commit event is usually the fourth event in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: ROW EVENT
# 4: COMMIT
# 5: DDL EVENT which triggered the previous commmit.
#
if (`select @@binlog_format = 'ROW'`)
{
let $commit_event_row_number= 4;
}
#
# In NDB (RBR and MIXED modes), the commit event is usually the seventh event
# in the binary log:
#
# 1: COMMAND
# 2: BEGIN
# 3: TABLE MAP EVENT
# 4: TABLE MAP EVENT (ndb_apply_status)
# 5: ROW EVENT
# 6: ROW EVENT
# 7: COMMIT
#
if (`select '$engine' = 'NDB'`)
{
let $commit_event_row_number= 7;
}
let $first_binlog_position= query_get_value("SHOW MASTER STATUS", Position, 1);
--enable_query_log
eval INSERT INTO tt_1(ddl_case) VALUES ($ddl_cases);
if (`SELECT $ddl_cases = 41`)
{
let $cmd= LOAD INDEX INTO CACHE nt_1 IGNORE LEAVES;
if (`SELECT '$engine' = 'NDB'`)
{
# This seems to be related to epochs.
# We need to check this against an updated version or avoid it.
let $ok= "no";
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 40`)
{
let $cmd= LOAD INDEX INTO CACHE tt_1, tt_2 IGNORE LEAVES;
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 39`)
{
let $cmd= ANALYZE TABLE nt_1;
}
if (`SELECT $ddl_cases = 38`)
{
let $cmd= CHECK TABLE nt_1;
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 37`)
{
let $cmd= OPTIMIZE TABLE nt_1;
}
if (`SELECT $ddl_cases = 36`)
{
let $cmd= REPAIR TABLE nt_1;
}
if (`SELECT $ddl_cases = 35`)
{
let $cmd= LOCK TABLES tt_1 WRITE;
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 34`)
{
let $cmd= UNLOCK TABLES;
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 33`)
{
let $cmd= CREATE USER 'user'@'localhost';
}
if (`SELECT $ddl_cases = 32`)
{
let $cmd= GRANT ALL ON *.* TO 'user'@'localhost';
}
if (`SELECT $ddl_cases = 31`)
{
let $cmd= SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');
#
# In NDB (RBR mode), the commit event is the eleventh event
# in the binary log:
#
# 1: DDL EVENT which triggered the previous commmit.
# 2: BEGIN
# 3: TABLE MAP EVENT
# 4: ROW EVENT
# 5: COMMIT
# 6: BEGIN
# 7: TABLE MAP EVENT
# 8: TABLE MAP EVENT (ndb_apply_status)
# 9: ROW EVENT
# 10: ROW EVENT
# 11: COMMIT
#
if (`SELECT '$engine' = 'NDB' && @@binlog_format = 'ROW'`)
{
let $commit_event_row_number= 11;
}
#
# In NDB (MIXED mode), the commit event is the eighth event
# in the binary log:
#
# 1: DDL EVENT which triggered the previous commmit.
# 2: COMMIT
# 3: BEGIN
# 4: TABLE MAP EVENT
# 5: TABLE MAP EVENT (ndb_apply_status)
# 6: ROW EVENT
# 7: ROW EVENT
# 8: COMMIT
#
if (`SELECT '$engine' = 'NDB' && @@binlog_format != 'ROW'`)
{
let $commit_event_row_number= 7;
}
}
if (`SELECT $ddl_cases = 30`)
{
let $cmd= REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'user'@'localhost';
}
if (`SELECT $ddl_cases = 29`)
{
let $cmd= RENAME USER 'user'@'localhost' TO 'user_new'@'localhost';
}
if (`SELECT $ddl_cases = 28`)
{
let $cmd= DROP USER 'user_new'@'localhost';
}
if (`SELECT $ddl_cases = 27`)
{
let $cmd= CREATE EVENT evt ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO SELECT * FROM tt_1;
}
if (`SELECT $ddl_cases = 26`)
{
let $cmd= ALTER EVENT evt COMMENT 'evt';
}
if (`SELECT $ddl_cases = 25`)
{
let $cmd= DROP EVENT evt;
}
if (`SELECT $ddl_cases = 24`)
{
let $cmd= CREATE TRIGGER tr AFTER INSERT ON tt_1 FOR EACH ROW UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
}
if (`SELECT $ddl_cases = 23`)
{
let $cmd= DROP TRIGGER tr;
#
# In RBR mode, due to the trigger the tt_2 is also updated:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT
# 4: ROW EVENT
# 5: COMMIT
# 6: DDL EVENT which triggered the previous commmit.
#
if (`select @@binlog_format = 'ROW' && '$engine' != 'NDB'`)
{
let $commit_event_row_number= 5;
}
}
if (`SELECT $ddl_cases = 22`)
{
let $cmd= CREATE FUNCTION fc () RETURNS VARCHAR(64) RETURN "fc";
}
if (`SELECT $ddl_cases = 21`)
{
let $cmd= ALTER FUNCTION fc COMMENT 'fc';
}
if (`SELECT $ddl_cases = 20`)
{
let $cmd= DROP FUNCTION fc;
}
if (`SELECT $ddl_cases = 19`)
{
let $cmd= CREATE PROCEDURE pc () UPDATE tt_2 SET ddl_case = ddl_case WHERE ddl_case= NEW.ddl_case;
}
if (`SELECT $ddl_cases = 18`)
{
let $cmd= ALTER PROCEDURE pc COMMENT 'pc';
}
if (`SELECT $ddl_cases = 17`)
{
let $cmd= DROP PROCEDURE pc;
}
if (`SELECT $ddl_cases = 16`)
{
let $cmd= CREATE VIEW v AS SELECT * FROM tt_1;
}
if (`SELECT $ddl_cases = 15`)
{
let $cmd= ALTER VIEW v AS SELECT * FROM tt_1;
}
if (`SELECT $ddl_cases = 14`)
{
let $cmd= DROP VIEW v;
}
if (`SELECT $ddl_cases = 13`)
{
let $cmd= CREATE INDEX ix ON tt_1(ddl_case);
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
# 7: DDL EVENT which triggered the previous commmit.
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 12`)
{
let $cmd= DROP INDEX ix ON tt_1;
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
# 7: DDL EVENT which triggered the previous commmit.
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 11`)
{
let $cmd= CREATE TEMPORARY TABLE tt_xx (a int);
let $in_temporary= "yes";
# In SBR and MIXED modes, the DDL statement is written to the binary log but
# does not commit the current transaction.
#
# 1: BEGIN
# 2: INSERT
# 3: CREATE TEMPORARY
#
# In RBR the transaction is not committed either and the statement is not
# written to the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: ROW EVENT
#
if (`select @@binlog_format = 'STATEMENT' || @@binlog_format = 'MIXED'`)
{
let $commit_event_row_number= 4;
}
#
# In NDB (RBR mode), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
#
if (`SELECT '$engine' = 'NDB' && @@binlog_format = 'ROW'` )
{
let $commit_event_row_number= 6;
}
#
# In NDB (MIXED mode), the commit event is the nineth event
# in the binary log:
#
# 1: BEGIN
# 2: DDL EVENT which triggered the previous commmit.
# 3: COMMIT
# 4: BEGIN
# 5: TABLE MAP EVENT
# 6: TABLE MAP EVENT (ndb_apply_status)
# 7: ROW EVENT
# 8: ROW EVENT
# 9: COMMIT
#
if (`SELECT '$engine' = 'NDB' && @@binlog_format != 'ROW'` )
{
let $commit_event_row_number= 9;
}
}
if (`SELECT $ddl_cases = 10`)
{
let $cmd= ALTER TABLE tt_xx ADD COLUMN (b int);
#
# In MIXED mode, the changes are logged as rows and we have what follows:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: ROW EVENT
# 4: COMMIT
# 5: DDL EVENT which triggered the previous commmit.
#
if (`select @@binlog_format = 'MIXED'`)
{
let $commit_event_row_number= 4;
}
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 9`)
{
let $cmd= ALTER TABLE tt_xx RENAME new_tt_xx;
#
# In MIXED mode, the changes are logged as rows and we have what follows:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: ROW EVENT
# 4: COMMIT
# 5: DDL EVENT which triggered the previous commmit.
#
if (`select @@binlog_format = 'MIXED'`)
{
let $commit_event_row_number= 4;
}
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 8`)
{
let $cmd= DROP TEMPORARY TABLE IF EXISTS new_tt_xx;
let $in_temporary= "yes";
#
# In SBR and MIXED modes, the DDL statement is written to the binary log
# but does not commit the current transaction:
#
# 1: BEGIN
# 2: INSERT
# 3: DROP TEMPORARY
#
# In RBR the transaction is not committed either and the statement is not
# written to the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: ROW EVENT
#
if (`select @@binlog_format = 'STATEMENT'`)
{
let $commit_event_row_number= 4;
}
# In MIXED mode, the changes are logged as rows and we have what follows:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: ROW EVENT
# 4: DROP TEMPORARY table IF EXISTS
#
if (`select @@binlog_format = 'MIXED'`)
{
let $commit_event_row_number= 5;
}
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
#
# In NDB (MIXED mode), the commit event is the nineth event
# in the binary log:
#
# 1: BEGIN
# 2: DDL EVENT which triggered the previous commmit.
# 3: COMMIT
# 4: BEGIN
# 5: TABLE MAP EVENT
# 6: TABLE MAP EVENT (ndb_apply_status)
# 7: ROW EVENT
# 8: ROW EVENT
# 9: COMMIT
#
if (`SELECT '$engine' = 'NDB' && @@binlog_format != 'ROW'` )
{
let $commit_event_row_number= 9;
}
}
if (`SELECT $ddl_cases = 7`)
{
let $cmd= CREATE TABLE tt_xx (a int);
}
if (`SELECT $ddl_cases = 6`)
{
let $cmd= ALTER TABLE tt_xx ADD COLUMN (b int);
}
if (`SELECT $ddl_cases = 5`)
{
let $cmd= RENAME TABLE tt_xx TO new_tt_xx;
}
if (`SELECT $ddl_cases = 4`)
{
let $cmd= TRUNCATE TABLE new_tt_xx;
}
if (`SELECT $ddl_cases = 3`)
{
let $cmd= DROP TABLE IF EXISTS tt_xx, new_tt_xx;
}
if (`SELECT $ddl_cases = 2`)
{
let $cmd= CREATE DATABASE db;
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
# 7: DDL EVENT which triggered the previous commmit.
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
if (`SELECT $ddl_cases = 1`)
{
let $cmd= DROP DATABASE IF EXISTS db;
#
# In NDB (RBR and MIXED modes), the commit event is the sixth event
# in the binary log:
#
# 1: BEGIN
# 2: TABLE MAP EVENT
# 3: TABLE MAP EVENT (ndb_apply_status)
# 4: ROW EVENT
# 5: ROW EVENT
# 6: COMMIT
# 7: DDL EVENT which triggered the previous commmit.
#
if (`SELECT '$engine' = 'NDB'`)
{
let $commit_event_row_number= 6;
}
}
--eval $cmd
--disable_query_log
#
# When a temporary table is either created or dropped, there is no implicit
# commit. The flag in_temporary is used to avoid aborting the test in such
# cases. Thus we force the commit.
#
if (`SELECT $in_temporary = "yes"`)
{
--eval COMMIT
}
let $event_commit= query_get_value("SHOW BINLOG EVENTS FROM $first_binlog_position", Info, $commit_event_row_number);
if (`SELECT SUBSTRING("$event_commit",1,6) != "COMMIT"`)
{
if (`SELECT $ok = "yes"`)
{
--echo it *does not* commit the current transaction.
--echo $cmd
--echo $event_commit
SHOW BINLOG EVENTS;
exit;
}
}
--echo -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
let $binlog_start= $first_binlog_position;
--echo -b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
--source include/show_binlog_events.inc
--echo -e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
--echo
dec $ddl_cases;
}
SET AUTOCOMMIT= 1;
--echo ###################################################################################
--echo # CHECK CONSISTENCY
--echo ###################################################################################
--sync_slave_with_master
--let $diff_table_1= master:test.tt_1
--let $diff_table_2= slave:test.tt_1
--source include/diff_tables.inc
--echo ###################################################################################
--echo # CLEAN
--echo ###################################################################################
connection master;
DROP TABLE tt_1;
DROP TABLE tt_2;
DROP TABLE nt_1;
sync_slave_with_master;

View File

@ -1,9 +1,3 @@
# File for specialities regarding replication from or to InnoDB
# tables.
source include/master-slave.inc;
source include/have_innodb.inc;
#
# Bug#11401: Load data infile 'REPLACE INTO' fails on slave.
#
@ -76,7 +70,7 @@ sync_slave_with_master;
connection slave;
# We want to verify that the following transactions are written to the
# binlog, despite the transaction is rolled back. (The should be
# binlog, despite the transaction is rolled back. (They should be
# written to the binlog since they contain non-transactional DROP
# TEMPORARY TABLE). To see that, we use the auxiliary table t1, which
# is transactional (InnoDB) on master and MyISAM on slave. t1 should
@ -84,6 +78,10 @@ connection slave;
# the transaction to be logged. Since t1 is non-transactional on
# slave, the change will not be rolled back, so the inserted rows will
# stay in t1 and we can verify that the transaction was replicated.
#
# Note, however, that the previous explanation is not true for ROW and
# MIXED modes as rollback on a transactional table is not written to
# the binary log.
ALTER TABLE mysqltest1.t1 ENGINE = MyISAM;
SHOW CREATE TABLE mysqltest1.t1;

View File

@ -38,18 +38,19 @@ connection master;
truncate table t1;
# first scenario: duplicate on first row
insert delayed into t1 values(10, "my name");
if ($binlog_format_statement)
flush table t1;
if (`SELECT @@global.binlog_format = 'STATEMENT'`)
{
# statement below will be converted to non-delayed INSERT and so
# will stop at first error, guaranteeing replication.
--error ER_DUP_ENTRY
insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
}
if (!$binlog_format_statement)
if (`SELECT @@global.binlog_format != 'STATEMENT'`)
{
insert delayed into t1 values(10, "is Bond"), (20, "James Bond");
}
flush table t1; # to wait for INSERT DELAYED to be done
flush table t1;
select * from t1;
sync_slave_with_master;
# when bug existed in statement-based binlogging, t1 on slave had
@ -59,7 +60,7 @@ select * from t1;
# second scenario: duplicate on second row
connection master;
delete from t1 where id!=10;
if ($binlog_format_statement)
if (`SELECT @@global.binlog_format = 'STATEMENT'`)
{
# statement below will be converted to non-delayed INSERT and so
# will be binlogged with its ER_DUP_ENTRY error code, guaranteeing
@ -67,7 +68,7 @@ if ($binlog_format_statement)
--error ER_DUP_ENTRY
insert delayed into t1 values(20, "is Bond"), (10, "James Bond");
}
if (!$binlog_format_statement)
if (`SELECT @@global.binlog_format != 'STATEMENT'`)
{
insert delayed into t1 values(20, "is Bond"), (10, "James Bond");
}
@ -108,6 +109,7 @@ if (`SELECT @@global.binlog_format != 'ROW'`)
{
#must show two INSERT DELAYED
--replace_column 1 x 2 x 3 x 4 x 5 x
--replace_regex /table_id: [0-9]+/table_id: #/
show binlog events in 'master-bin.000002' LIMIT 2,2;
}
select * from t1;
@ -118,6 +120,7 @@ if (`SELECT @@global.binlog_format != 'ROW'`)
{
#must show two INSERT DELAYED
--replace_column 1 x 2 x 3 x 4 x 5 x
--replace_regex /table_id: [0-9]+/table_id: #/
show binlog events in 'slave-bin.000002' LIMIT 2,2;
}
select * from t1;

View File

@ -9,6 +9,8 @@
# column and index but without primary key.
##############################################################
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
--echo #
--echo # Setup
--echo #
@ -188,7 +190,9 @@ drop trigger t1_bi;
# Check that nested call doesn't affect outer context.
select last_insert_id();
--disable_warnings
select bug15728_insert();
--enable_warnings
select last_insert_id();
insert into t1 (last_id) values (bug15728());
# This should be exactly one greater than in the previous call.
@ -441,7 +445,9 @@ delimiter ;|
INSERT INTO t1 VALUES (NULL, -1);
CALL p1();
--disable_warnings
SELECT f1();
--enable_warnings
INSERT INTO t1 VALUES (NULL, f2()), (NULL, LAST_INSERT_ID()),
(NULL, LAST_INSERT_ID()), (NULL, f2()), (NULL, f2());
INSERT INTO t1 VALUES (NULL, f2());
@ -510,7 +516,9 @@ insert into t2 (id) values(1),(2),(3);
delete from t2;
set sql_log_bin=1;
#inside SELECT, then inside INSERT
--disable_warnings
select insid();
--enable_warnings
set sql_log_bin=0;
insert into t2 (id) values(5),(6),(7);
delete from t2 where id>=5;

View File

@ -55,7 +55,9 @@ INSERT INTO t1 VALUES (2, 2);
INSERT INTO t1 VALUES (3, 3);
INSERT INTO t1 VALUES (4, 4);
--disable_warnings
INSERT IGNORE INTO t1 SELECT NULL, t2.b FROM t2 ORDER BY t2.a;
--enable_warnings
SELECT * FROM t1 ORDER BY a;

View File

@ -1,6 +1,3 @@
# Requires statement logging
-- source include/have_binlog_format_mixed_or_statement.inc
# See if replication of a "LOAD DATA in an autoincrement column"
# Honours autoincrement values
# i.e. if the master and slave have the same sequence
@ -163,8 +160,11 @@ eval $lower_stmt_head infile '../../std_data/rpl_loaddata2.dat' into table t2 fi
terminated by ',' optionally enclosed by '%' escaped by '@' lines terminated by
'\n##\n' starting by '>' ignore 1 lines;
connection slave;
--source include/wait_for_slave_sql_to_stop.inc
drop table t1, t2;
if (`SELECT @@global.binlog_format != 'ROW'`)
{
--source include/wait_for_slave_sql_to_stop.inc
drop table t1, t2;
}
connection master;
drop table t1, t2;

View File

@ -43,7 +43,7 @@ show binlog events from 107 limit 1;
show binlog events from 107 limit 2;
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
show binlog events from 107 limit 2,1;
show binlog events from 107 limit 1,4;
flush logs;
# We need an extra update before doing save_master_pos.
@ -104,7 +104,7 @@ show binlog events in 'slave-bin.000001' from 4;
--replace_column 2 # 5 #
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
show binlog events in 'slave-bin.000002' from 4;
source include/show_slave_status.inc;
source include/show_slave_status2.inc;
# Need to recode the following

View File

@ -0,0 +1,554 @@
################################################################################
# This is an auxiliary file used by rpl_mixing_engines.test, and that it
# executes SQL statements according to a format string, as specified in
# rpl_mixing_engines.test. In addition, it accepts the special format
# strings 'configure' and 'clean', used before and after everything else.
################################################################################
if (`SELECT HEX(@commands) = HEX('configure')`)
{
connection master;
SET SQL_LOG_BIN=0;
eval CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval SET SQL_LOG_BIN=1;
connection slave;
SET SQL_LOG_BIN=0;
eval CREATE TABLE nt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE nt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = MyISAM;
eval CREATE TABLE tt_1 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_2 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_3 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_4 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_5 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
eval CREATE TABLE tt_6 (trans_id INT, stmt_id INT, info VARCHAR(64), PRIMARY KEY(trans_id, stmt_id)) ENGINE = $engine_type;
SET SQL_LOG_BIN=1;
connection master;
INSERT INTO nt_1(trans_id, stmt_id) VALUES(1,1);
INSERT INTO nt_2(trans_id, stmt_id) VALUES(1,1);
INSERT INTO nt_3(trans_id, stmt_id) VALUES(1,1);
INSERT INTO nt_4(trans_id, stmt_id) VALUES(1,1);
INSERT INTO nt_5(trans_id, stmt_id) VALUES(1,1);
INSERT INTO nt_6(trans_id, stmt_id) VALUES(1,1);
INSERT INTO tt_1(trans_id, stmt_id) VALUES(1,1);
INSERT INTO tt_2(trans_id, stmt_id) VALUES(1,1);
INSERT INTO tt_3(trans_id, stmt_id) VALUES(1,1);
INSERT INTO tt_4(trans_id, stmt_id) VALUES(1,1);
INSERT INTO tt_5(trans_id, stmt_id) VALUES(1,1);
INSERT INTO tt_6(trans_id, stmt_id) VALUES(1,1);
DELIMITER |;
CREATE PROCEDURE pc_i_tt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
BEGIN
DECLARE in_stmt_id INTEGER;
SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
END|
CREATE PROCEDURE pc_i_nt_5_suc (IN p_trans_id INTEGER, IN p_stmt_id INTEGER)
BEGIN
DECLARE in_stmt_id INTEGER;
SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
END|
CREATE FUNCTION fc_i_tt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
BEGIN
DECLARE in_stmt_id INTEGER;
SELECT max(stmt_id) INTO in_stmt_id FROM tt_5 WHERE trans_id= p_trans_id;
SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
INSERT INTO tt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
RETURN "fc_i_tt_5_suc";
END|
CREATE FUNCTION fc_i_nt_5_suc (p_trans_id INTEGER, p_stmt_id INTEGER) RETURNS VARCHAR(64)
BEGIN
DECLARE in_stmt_id INTEGER;
SELECT max(stmt_id) INTO in_stmt_id FROM nt_5 WHERE trans_id= p_trans_id;
SELECT COALESCE(greatest(in_stmt_id + 1, p_stmt_id), 1) INTO in_stmt_id;
INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id);
INSERT INTO nt_5(trans_id, stmt_id) VALUES (p_trans_id, in_stmt_id + 1);
RETURN "fc_i_nt_5_suc";
END|
CREATE TRIGGER tr_i_tt_3_to_nt_3 AFTER INSERT ON tt_3 FOR EACH ROW
BEGIN
DECLARE in_stmt_id INTEGER;
SELECT max(stmt_id) INTO in_stmt_id FROM nt_3 WHERE trans_id= NEW.trans_id;
SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
INSERT INTO nt_3(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
END|
CREATE TRIGGER tr_i_nt_4_to_tt_4 AFTER INSERT ON nt_4 FOR EACH ROW
BEGIN
DECLARE in_stmt_id INTEGER;
SELECT max(stmt_id) INTO in_stmt_id FROM tt_4 WHERE trans_id= NEW.trans_id;
SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
INSERT INTO tt_4(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
END|
CREATE TRIGGER tr_i_tt_5_to_tt_6 AFTER INSERT ON tt_5 FOR EACH ROW
BEGIN
DECLARE in_stmt_id INTEGER;
SELECT max(stmt_id) INTO in_stmt_id FROM tt_6 WHERE trans_id= NEW.trans_id;
SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id, 1), 1) INTO in_stmt_id;
INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
INSERT INTO tt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
END|
CREATE TRIGGER tr_i_nt_5_to_nt_6 AFTER INSERT ON nt_5 FOR EACH ROW
BEGIN
DECLARE in_stmt_id INTEGER;
SELECT max(stmt_id) INTO in_stmt_id FROM nt_6 WHERE trans_id= NEW.trans_id;
SELECT COALESCE(greatest(in_stmt_id + 1, NEW.stmt_id), 1) INTO in_stmt_id;
INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id);
INSERT INTO nt_6(trans_id, stmt_id) VALUES (NEW.trans_id, in_stmt_id + 1);
END|
DELIMITER ;|
let $pos_trans_command= query_get_value("SHOW MASTER STATUS", Position, 1);
let $trans_id= 7;
let $tb_id= 1;
let $stmt_id= 1;
let $commands= '';
SET @commands= '';
}
if (`SELECT HEX(@commands) = HEX('clean')`)
{
connection master;
DROP TABLE tt_1;
DROP TABLE tt_2;
DROP TABLE tt_3;
DROP TABLE tt_4;
DROP TABLE tt_5;
DROP TABLE tt_6;
DROP TABLE nt_1;
DROP TABLE nt_2;
DROP TABLE nt_3;
DROP TABLE nt_4;
DROP TABLE nt_5;
DROP TABLE nt_6;
DROP PROCEDURE pc_i_tt_5_suc;
DROP PROCEDURE pc_i_nt_5_suc;
DROP FUNCTION fc_i_tt_5_suc;
DROP FUNCTION fc_i_nt_5_suc;
sync_slave_with_master;
SET @commands= '';
}
while (`SELECT HEX(@commands) != HEX('')`)
{
--disable_query_log
SET @command= SUBSTRING_INDEX(@commands, ' ', 1);
let $command= `SELECT @command`;
--eval SET @check_commands= '$commands'
if (`SELECT HEX(@check_commands) = HEX('''')`)
{
let $commands= `SELECT @commands`;
}
--echo -b-b-b-b-b-b-b-b-b-b-b- >> $command << -b-b-b-b-b-b-b-b-b-b-b-
let $pos_command= query_get_value("SHOW MASTER STATUS", Position, 1);
--enable_query_log
if (`SELECT HEX(@command) = HEX('B')`)
{
eval BEGIN;
}
if (`SELECT HEX(@command) = HEX('T')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO tt_1(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('T-trig')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO tt_5(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('T-func')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval SELECT fc_i_tt_5_suc ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('T-proc')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval CALL pc_i_tt_5_suc ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('eT')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from tt_1`;
let $old_stmt_id= `SELECT max(stmt_id) from tt_1 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO tt_1(trans_id, stmt_id) VALUES ($old_trans_id, $old_stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('Te')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from tt_1`;
let $old_stmt_id= `SELECT max(stmt_id) from tt_1 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO tt_1(trans_id, stmt_id) VALUES ($trans_id, $stmt_id), ($old_trans_id, $old_stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('Te-trig')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from tt_5`;
let $old_stmt_id= `SELECT max(stmt_id) from tt_5 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO tt_5(trans_id, stmt_id) VALUES ($trans_id, $stmt_id), ($old_trans_id, $old_stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('Te-func')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from tt_1`;
let $old_stmt_id= `SELECT max(stmt_id) from tt_1 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO tt_1(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''), ($old_trans_id, $old_stmt_id, fc_i_tt_5_suc ($trans_id, $stmt_id));
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('N')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO nt_1(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('N-trig')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO nt_5(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('N-func')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval SELECT fc_i_nt_5_suc ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('N-proc')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval CALL pc_i_nt_5_suc ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('eN')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from nt_1`;
let $old_stmt_id= `SELECT max(stmt_id) from nt_1 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO nt_1(trans_id, stmt_id) VALUES ($old_trans_id, $old_stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('Ne')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from nt_1`;
let $old_stmt_id= `SELECT max(stmt_id) from nt_1 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO nt_1(trans_id, stmt_id) VALUES ($trans_id, $stmt_id), ($old_trans_id, $old_stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('Ne-trig')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from nt_5`;
let $old_stmt_id= `SELECT max(stmt_id) from nt_5 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO nt_5(trans_id, stmt_id) VALUES ($trans_id, $stmt_id), ($old_trans_id, $old_stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('Ne-func')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from nt_1`;
let $old_stmt_id= `SELECT max(stmt_id) from nt_1 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO nt_1(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''), ($old_trans_id, $old_stmt_id, fc_i_nt_5_suc ($trans_id, $stmt_id));
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('tN')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO nt_1(trans_id, stmt_id, info) SELECT $trans_id, $stmt_id, COUNT(*) FROM tt_1;
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('tNe')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from nt_1`;
let $old_stmt_id= `SELECT max(stmt_id) from nt_1 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO nt_1(trans_id, stmt_id, info) SELECT $trans_id, $stmt_id, COUNT(*) FROM tt_1 UNION SELECT $old_trans_id, $old_stmt_id, COUNT(*) FROM tt_1;
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('nT')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO tt_1(trans_id, stmt_id, info) SELECT $trans_id, $stmt_id, COUNT(*) FROM nt_1;
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('nTe')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from tt_1`;
let $old_stmt_id= `SELECT max(stmt_id) from tt_1 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO tt_1(trans_id, stmt_id, info) SELECT $trans_id, $stmt_id, COUNT(*) FROM nt_1 UNION SELECT $old_trans_id, $old_stmt_id, COUNT(*) FROM nt_1;
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('NT')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval UPDATE nt_3, tt_3 SET nt_3.info= "new text $trans_id --> $stmt_id", tt_3.info= "new text $trans_id --> $stmt_id" where nt_3.trans_id = tt_3.trans_id and tt_3.trans_id = 1;
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('NT-trig')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO nt_4(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('NT-func')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO nt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, fc_i_tt_5_suc($trans_id, $stmt_id));
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('NeT-trig')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from nt_4`;
let $old_stmt_id= `SELECT max(stmt_id) from nt_4 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO nt_4(trans_id, stmt_id) VALUES ($trans_id, $stmt_id), ($old_trans_id, $old_stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('NeT-func')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from nt_5`;
let $old_stmt_id= `SELECT max(stmt_id) from nt_5 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO nt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''), ($old_trans_id, $old_stmt_id, fc_i_tt_5_suc ($trans_id, $stmt_id));
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('TN')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval UPDATE tt_4, nt_4 SET tt_4.info= "new text $trans_id --> $stmt_id", nt_4.info= "new text $trans_id --> $stmt_id" where nt_4.trans_id = tt_4.trans_id and tt_4.trans_id = 1;
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('TN-trig')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO tt_3(trans_id, stmt_id) VALUES ($trans_id, $stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('TN-func')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
eval INSERT INTO tt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, fc_i_nt_5_suc($trans_id, $stmt_id));
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('TeN-trig')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from tt_3`;
let $old_stmt_id= `SELECT max(stmt_id) from tt_3 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO tt_3(trans_id, stmt_id) VALUES ($trans_id, $stmt_id), ($old_trans_id, $old_stmt_id);
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('TeN-func')`)
{
#--echo DEBUG-- (trans_id, stmt_id) --> ($trans_id, $stmt_id)
let $old_trans_id= `SELECT max(trans_id) from tt_5`;
let $old_stmt_id= `SELECT max(stmt_id) from tt_5 where trans_id= $old_trans_id`;
--error ER_DUP_ENTRY, ER_DUP_KEY
eval INSERT INTO tt_5(trans_id, stmt_id, info) VALUES ($trans_id, $stmt_id, ''), ($old_trans_id, $old_stmt_id, fc_i_nt_5_suc ($trans_id, $stmt_id));
inc $stmt_id;
}
if (`SELECT HEX(@command) = HEX('CS-T->T')`)
{
--eval CREATE TABLE tt_xx_$tb_id (PRIMARY KEY(trans_id, stmt_id)) engine=$engine_type SELECT * FROM tt_1;
}
if (`SELECT HEX(@command) = HEX('CS-N->N')`)
{
--eval CREATE TABLE nt_xx_$tb_id (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM nt_1;
}
if (`SELECT HEX(@command) = HEX('CS-T->N')`)
{
--eval CREATE TABLE tt_xx_$tb_id (PRIMARY KEY(trans_id, stmt_id)) engine=$engine_type SELECT * FROM nt_1;
}
if (`SELECT HEX(@command) = HEX('CS-N->T')`)
{
--eval CREATE TABLE nt_xx_$tb_id (PRIMARY KEY(trans_id, stmt_id)) engine=MyIsam SELECT * FROM tt_1;
}
if (`SELECT HEX(@command) = HEX('CSe-T->T')`)
{
--error ER_DUP_ENTRY, ER_DUP_KEY
--eval CREATE TABLE tt_xx_$tb_id (PRIMARY KEY (stmt_id)) engine=$engine_type SELECT stmt_id FROM tt_1;
}
if (`SELECT HEX(@command) = HEX('CSe-N->N')`)
{
--error ER_DUP_ENTRY, ER_DUP_KEY
--eval CREATE TABLE nt_xx_$tb_id (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM nt_1;
}
if (`SELECT HEX(@command) = HEX('CSe-T->N')`)
{
--error ER_DUP_ENTRY, ER_DUP_KEY
--eval CREATE TABLE tt_xx_$tb_id (PRIMARY KEY (stmt_id)) engine=$engine_type SELECT stmt_id FROM nt_1;
}
if (`SELECT HEX(@command) = HEX('CSe-N->T')`)
{
--error ER_DUP_ENTRY, ER_DUP_KEY
--eval CREATE TABLE nt_xx_$tb_id (PRIMARY KEY (stmt_id)) engine=MyIsam SELECT stmt_id FROM tt_1;
}
if (`SELECT HEX(@command) = HEX('CT')`)
{
--eval CREATE TEMPORARY TABLE tt_xx_$tb_id (a int) engine=$engine_type;
}
if (`SELECT HEX(@command) = HEX('IS-T<-N')`)
{
--eval INSERT INTO tt_xx_$tb_id(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;
}
if (`SELECT HEX(@command) = HEX('ISe-T<-N')`)
{
--error ER_DUP_ENTRY, ER_DUP_KEY
--eval INSERT INTO tt_xx_$tb_id(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;
}
if (`SELECT HEX(@command) = HEX('IS-N<-T')`)
{
--eval INSERT INTO nt_xx_$tb_id(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;
}
if (`SELECT HEX(@command) = HEX('ISe-N<-T')`)
{
--error ER_DUP_ENTRY, ER_DUP_KEY
--eval INSERT INTO nt_xx_$tb_id(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;
}
if (`SELECT HEX(@command) = HEX('IS-T<-T')`)
{
--eval INSERT INTO tt_xx_$tb_id(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM tt_1;
}
if (`SELECT HEX(@command) = HEX('ISe-T<-T')`)
{
--error ER_DUP_ENTRY, ER_DUP_KEY
--eval INSERT INTO tt_xx_$tb_id(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM tt_1;
}
if (`SELECT HEX(@command) = HEX('IS-N<-N')`)
{
--eval INSERT INTO nt_xx_$tb_id(trans_id, stmt_id, info) SELECT trans_id, stmt_id, USER() FROM nt_1;
}
if (`SELECT HEX(@command) = HEX('ISe-N<-N')`)
{
--error ER_DUP_ENTRY, ER_DUP_KEY
--eval INSERT INTO nt_xx_$tb_id(trans_id, stmt_id, info) SELECT trans_id, trans_id, USER() FROM nt_1;
}
if (`SELECT HEX(@command) = HEX('trunc-CS-T')`)
{
eval TRUNCATE TABLE tt_xx_$tb_id;
}
if (`SELECT HEX(@command) = HEX('trunc-CS-N')`)
{
eval TRUNCATE TABLE nt_xx_$tb_id;
}
if (`SELECT HEX(@command) = HEX('trunc-CT')`)
{
eval TRUNCATE TABLE tt_xx_$tb_id;
}
if (`SELECT HEX(@command) = HEX('drop-CS')`)
{
--disable_warnings
eval DROP TABLE IF EXISTS tt_xx_$tb_id, nt_xx_$tb_id;
inc $tb_id;
--enable_warnings
}
if (`SELECT HEX(@command) = HEX('drop-CT')`)
{
--disable_warnings
eval DROP TEMPORARY TABLE IF EXISTS tt_xx_$tb_id;
inc $tb_id;
--enable_warnings
}
if (`SELECT HEX(@command) = HEX('C')`)
{
--error 0, ER_GET_ERRMSG
eval COMMIT;
}
if (`SELECT HEX(@command) = HEX('R')`)
{
--error 0, ER_GET_ERRMSG
eval ROLLBACK;
}
if (`SELECT HEX(@command) = HEX('S1')`)
{
eval SAVEPOINT s1;
}
if (`SELECT HEX(@command) = HEX('R1')`)
{
eval ROLLBACK TO s1;
}
--disable_query_log
SET @commands= LTRIM(SUBSTRING(@commands, LENGTH(@command) + 1));
inc $stmt_id;
let $binlog_start= $pos_command;
--source include/show_binlog_events.inc
--echo -e-e-e-e-e-e-e-e-e-e-e- >> $command << -e-e-e-e-e-e-e-e-e-e-e-
if (`SELECT HEX(@commands) = HEX('')`)
{
let $binlog_start= $pos_trans_command;
--echo -b-b-b-b-b-b-b-b-b-b-b- >> $commands << -b-b-b-b-b-b-b-b-b-b-b-
--source include/show_binlog_events.inc
--echo -e-e-e-e-e-e-e-e-e-e-e- >> $commands << -e-e-e-e-e-e-e-e-e-e-e-
--echo
let $pos_trans_command= query_get_value("SHOW MASTER STATUS", Position, 1);
let $stmt_id= 1;
inc $trans_id;
let $commands= '';
}
}

File diff suppressed because it is too large Load Diff

View File

@ -141,7 +141,9 @@ let $run= 5;
while ($run)
{
START TRANSACTION;
--disable_warnings
--eval CALL tpcb.trans($rpl_format);
--enable_warnings
eval SET @my_errno= $mysql_errno;
let $run_good= `SELECT @my_errno = 0`;
let $run_bad= `SELECT @my_errno <> 0`;
@ -190,7 +192,9 @@ let $run= 5;
while ($run)
{
START TRANSACTION;
--disable_warnings
--eval CALL tpcb.trans($rpl_format);
--enable_warnings
eval SET @my_errno= $mysql_errno;
let $run_good= `SELECT @my_errno = 0`;
let $run_bad= `SELECT @my_errno <> 0`;
@ -240,7 +244,9 @@ let $run= 5;
while ($run)
{
START TRANSACTION;
--disable_warnings
--eval CALL tpcb.trans($rpl_format);
--enable_warnings
eval SET @my_errno= $mysql_errno;
let $run_good= `SELECT @my_errno = 0`;
let $run_bad= `SELECT @my_errno <> 0`;

View File

@ -6,6 +6,7 @@
# First we test tables with only an index.
#
connection master;
eval CREATE TABLE t1 (C1 CHAR(1), C2 CHAR(1), INDEX (C1)$extra_index_t1) ENGINE = $type ;
SELECT * FROM t1;
sync_slave_with_master;
@ -156,6 +157,12 @@ SELECT * FROM t5,t2,t3 WHERE t5.C2='Q' AND t2.c12='R' AND t3.C3 ='S' ORDER BY t5
# Testing special column types
#
if (`select char_length('$bit_field_special') > 0`) {
SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS;
connection slave;
eval SET GLOBAL SLAVE_TYPE_CONVERSIONS = '$bit_field_special';
}
connection master;
eval CREATE TABLE t4 (C1 CHAR(1) PRIMARY KEY, B1 BIT(1), B2 BIT(1) NOT NULL DEFAULT 0, C2 CHAR(1) NOT NULL DEFAULT 'A') ENGINE = $type ;
@ -164,6 +171,10 @@ SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1;
sync_slave_with_master;
SELECT C1,HEX(B1),HEX(B2) FROM t4 ORDER BY C1;
if (`select char_length('$bit_field_special') > 0`) {
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
}
#
# Testing conflicting operations
#
@ -350,6 +361,10 @@ eval CREATE TABLE t7 (i INT NOT NULL,
c CHAR(255) CHARACTER SET utf8 NOT NULL,
j INT NOT NULL) ENGINE = $type ;
connection slave;
SET @saved_slave_type_conversions = @@slave_type_conversions;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
--echo [expecting slave to replicate correctly]
connection master;
INSERT INTO t1 VALUES (1, "", 1);
@ -370,17 +385,9 @@ let $diff_table_1=master:test.t2;
let $diff_table_2=slave:test.t2;
source include/diff_tables.inc;
--echo [expecting slave to stop]
connection master;
INSERT INTO t3 VALUES (1, "", 1);
INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2);
connection slave;
source include/wait_for_slave_sql_to_stop.inc;
let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1);
disable_query_log;
eval SELECT "$last_error" AS Last_SQL_Error;
enable_query_log;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
connection master;
RESET MASTER;
connection slave;
@ -600,7 +607,15 @@ sync_slave_with_master;
connection master;
# Since t1 contain a bit field, we have to do this trick to handle InnoDB
if (`select char_length('$bit_field_special') > 0`) {
SET @saved_slave_type_conversions = @@SLAVE_TYPE_CONVERSIONS;
connection slave;
eval SET GLOBAL SLAVE_TYPE_CONVERSIONS = '$bit_field_special';
}
--disable_warnings
connection master;
eval CREATE TABLE t1 (a bit) ENGINE=$type;
INSERT IGNORE INTO t1 VALUES (NULL);
INSERT INTO t1 ( a ) VALUES ( 0 );
@ -645,6 +660,10 @@ UPDATE t1 SET a = 9 WHERE a < 5 LIMIT 3;
sync_slave_with_master;
if (`select char_length('$bit_field_special') > 0`) {
SET GLOBAL SLAVE_TYPE_CONVERSIONS = @saved_slave_type_conversions;
}
let $diff_table_1=master:test.t1;
let $diff_table_2=slave:test.t1;
source include/diff_tables.inc;

View File

@ -23,7 +23,7 @@ let $binary_log_limit_row= 3;
-- echo [MASTER] ********* SOW BINLOG EVENTS ... LIMIT offset,rows *********
let $binary_log_file= ;
let $binary_log_limit_row= 3;
let $binary_log_limit_row= 4;
let $binary_log_limit_offset= 1;
-- source include/show_binlog_events.inc
@ -49,7 +49,7 @@ let $binary_log_limit_row= 3;
-- echo [SLAVE] ********* SOW BINLOG EVENTS ... LIMIT offset,rows *********
let $binary_log_file= ;
let $binary_log_limit_row= 3;
let $binary_log_limit_row= 4;
let $binary_log_limit_offset= 1;
-- source include/show_binlog_events.inc

View File

@ -1,10 +1,14 @@
source include/master-slave.inc;
source include/have_innodb.inc;
#
# Bug#6148 ()
#
# Let the master do lots of insertions
connection master;
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
connection slave;
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
connection master;
create table t1(n int);
sync_slave_with_master;

View File

@ -3,7 +3,7 @@
-- source include/have_binlog_format_statement.inc
-- source include/master-slave.inc
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
# Load some data into t1
create table t1 (word char(20) not null);

View File

@ -1,7 +1,3 @@
-- source include/have_debug.inc
-- source include/master-slave.inc
-- source include/have_innodb.inc
# Proving that stopping in the middle of applying a group of events
# does not have immediate effect if a non-transaction table has been changed.
# The slave sql thread has to try to finish applying first.
@ -11,6 +7,8 @@
connection master;
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
create table tm (a int auto_increment primary key) engine=myisam;
create table ti (a int auto_increment primary key) engine=innodb;

View File

@ -0,0 +1,882 @@
# File containing different lossy and non-lossy type conversions.
# Integral conversion testing, we do not reduce the test using
# transitivity of conversions since the implementation is not using a
# transitivity strategy. Instead we do an exhaustive testing.
disable_query_log;
connection slave;
--let $conv = `select @@slave_type_conversions`
--echo **** Running tests with @@SLAVE_TYPE_CONVERSIONS = '$conv' ****
let $if_is_lossy = `SELECT FIND_IN_SET('ALL_LOSSY', @@SLAVE_TYPE_CONVERSIONS)`;
let $if_is_non_lossy = `SELECT FIND_IN_SET('ALL_NON_LOSSY', @@SLAVE_TYPE_CONVERSIONS)`;
# TINYBLOB
let $source_type = TINYBLOB;
let $target_type = TINYBLOB;
let $source_value = 'aaa';
let $target_value = 'aaa';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYBLOB;
let $target_type= BLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYBLOB;
let $target_type= MEDIUMBLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYBLOB;
let $target_type= LONGBLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
# BLOB
let $source_type = BLOB;
let $target_type = TINYBLOB;
let $source_value = 'aaa';
let $target_value = 'aaa';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BLOB;
let $target_type= BLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= 1;
source extra/rpl_tests/check_type.inc;
let $source_type= BLOB;
let $target_type= MEDIUMBLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BLOB;
let $target_type= LONGBLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
# MEDIUMBLOB
let $source_type = MEDIUMBLOB;
let $target_type = TINYBLOB;
let $source_value = 'aaa';
let $target_value = 'aaa';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMBLOB;
let $target_type= BLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMBLOB;
let $target_type= MEDIUMBLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= 1;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMBLOB;
let $target_type= LONGBLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
# LONGBLOB
let $source_type = LONGBLOB;
let $target_type = TINYBLOB;
let $source_value = 'aaa';
let $target_value = 'aaa';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= LONGBLOB;
let $target_type= BLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= LONGBLOB;
let $target_type= MEDIUMBLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= LONGBLOB;
let $target_type= LONGBLOB;
let $source_value= 'aaa';
let $target_value= 'aaa';
let $can_convert= 1;
source extra/rpl_tests/check_type.inc;
# BUG#49836 (additional tests - GEOMETRY TYPE)
let $source_type = GEOMETRY;
let $target_type = BLOB;
let $source_value = PointFromText('POINT(10 10)');
let $target_value = PointFromText('POINT(10 10)');
let $can_convert = 0;
source extra/rpl_tests/check_type.inc;
let $source_type = BLOB;
let $target_type = GEOMETRY;
let $source_value = 'aaa';
let $target_value = 'aaa';
let $can_convert = 0;
source extra/rpl_tests/check_type.inc;
let $source_type = GEOMETRY;
let $target_type = GEOMETRY;
let $source_value = PointFromText('POINT(10 10)');
let $target_value = PointFromText('POINT(10 10)');
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type = BIT(1);
let $target_type = BIT(1);
let $source_value = b'1';
let $target_value = b'1';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type = DATE;
let $target_type = DATE;
let $source_value = '2009-11-21';
let $target_value = '2009-11-21';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type = ENUM('master','slave');
let $target_type = ENUM('master','slave');
let $source_value = 'master';
let $target_value = 'master';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type = CHAR(10);
let $target_type = ENUM('master','slave');
let $source_value = 'master';
let $target_value = 'master';
let $can_convert = 0;
source extra/rpl_tests/check_type.inc;
let $source_type = CHAR(10);
let $target_type = SET('master','slave');
let $source_value = 'master';
let $target_value = 'master';
let $can_convert = 0;
source extra/rpl_tests/check_type.inc;
let $source_type = ENUM('master','slave');
let $target_type = CHAR(10);
let $source_value = 'master';
let $target_value = 'master';
let $can_convert = 0;
source extra/rpl_tests/check_type.inc;
let $source_type = SET('master','slave');
let $target_type = CHAR(10);
let $source_value = 'master';
let $target_value = 'master';
let $can_convert = 0;
source extra/rpl_tests/check_type.inc;
let $source_type = SET('master','slave');
let $target_type = SET('master','slave');
let $source_value = '';
let $target_value = '';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type = SET('master','slave');
let $target_type = SET('master','slave');
let $source_value = 'master,slave';
let $target_value = 'master,slave';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type = SET('0','1','2','3','4','5','6');
let $target_type = SET('0','1','2','3','4','5','6');
let $source_value = '5';
let $target_value = '5';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type = SET('0','1','2','3','4','5','6');
let $target_type = SET('0','1','2','3','4','5','6','7','8','9','10');
let $source_value = '5';
let $target_value = '5';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type = SET('0','1','2','3','4','5','6','7','8','9','10');
let $target_type = SET('0','1','2','3','4','5','6');
let $source_value = '5';
let $target_value = '5';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type = SET('0','1','2','3','4','5','6','7','8','9','10');
let $target_type = SET('0','1','2','3','4','5','6');
let $source_value = '7';
let $target_value = '';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type = TINYINT;
let $target_type = TINYINT;
let $source_value = 1;
let $target_value = 1;
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type = TINYINT;
let $target_type = SMALLINT;
let $source_value = 1;
let $target_value = 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYINT;
let $target_type= MEDIUMINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYINT;
let $target_type= INT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYINT;
let $target_type= BIGINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= SMALLINT;
let $target_type= TINYINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= SMALLINT;
let $target_type= TINYINT;
let $source_value= 1 << 9;
let $target_value= (1 << 7) - 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= SMALLINT;
let $target_type= TINYINT UNSIGNED;
let $source_value= 1 << 9;
let $target_value= (1 << 8) - 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= SMALLINT;
let $target_type= SMALLINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= SMALLINT;
let $target_type= MEDIUMINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= SMALLINT;
let $target_type= INT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= SMALLINT;
let $target_type= BIGINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMINT;
let $target_type= TINYINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMINT;
let $target_type= TINYINT;
let $source_value= 1 << 20;
let $target_value= (1 << 7) - 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMINT;
let $target_type= TINYINT UNSIGNED;
let $source_value= 1 << 20;
let $target_value= (1 << 8) - 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMINT;
let $target_type= SMALLINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMINT;
let $target_type= MEDIUMINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMINT;
let $target_type= INT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMINT;
let $target_type= BIGINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= INT;
let $target_type= TINYINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= INT;
let $target_type= TINYINT;
let $source_value= (1 << 30);
let $target_value= (1 << 7) - 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= INT;
let $target_type= TINYINT UNSIGNED;
let $source_value= (1 << 30);
let $target_value= (1 << 8) - 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= INT;
let $target_type= SMALLINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= INT;
let $target_type= MEDIUMINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= INT;
let $target_type= INT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= INT;
let $target_type= BIGINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIGINT;
let $target_type= TINYINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIGINT;
let $target_type= SMALLINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIGINT;
let $target_type= MEDIUMINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIGINT;
let $target_type= INT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIGINT;
let $target_type= BIGINT;
let $source_value= 1;
let $target_value= 1;
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= CHAR(20);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= CHAR(30);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= CHAR(10);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnood';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= VARCHAR(20);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= VARCHAR(30);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= VARCHAR(10);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnood';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= TINYTEXT;
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= TEXT;
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= MEDIUMTEXT;
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= CHAR(20);
let $target_type= LONGTEXT;
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= VARCHAR(20);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= VARCHAR(30);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= VARCHAR(10);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnood';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= CHAR(30);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= CHAR(10);
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnood';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= TINYTEXT;
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= TEXT;
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= MEDIUMTEXT;
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(20);
let $target_type= LONGTEXT;
let $source_value= 'Smoothnoodlemaps';
let $target_value= 'Smoothnoodlemaps';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $blob = `select repeat('abcd', 125)`;
let $truncated_blob = `select left('$blob', 255)`;
let $source_type= VARCHAR(500);
let $target_type= VARCHAR(500);
let $source_value= '$blob';
let $target_value= '$blob';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(500);
let $target_type= VARCHAR(510);
let $source_value= '$blob';
let $target_value= '$blob';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(500);
let $target_type= VARCHAR(255);
let $source_value= '$blob';
let $target_value= '$truncated_blob';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(500);
let $target_type= TINYTEXT;
let $source_value= '$blob';
let $target_value= '$truncated_blob';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(500);
let $target_type= TEXT;
let $source_value= '$blob';
let $target_value= '$blob';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(500);
let $target_type= MEDIUMTEXT;
let $source_value= '$blob';
let $target_value= '$blob';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= VARCHAR(500);
let $target_type= LONGTEXT;
let $source_value= '$blob';
let $target_value= '$blob';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $tiny_blob = `select repeat('tiny blob ', 25)`;
let $truncated_tiny_blob = `select left('$tiny_blob', 254)`;
let $source_type= TINYTEXT;
let $target_type= VARCHAR(500);
let $source_value= '$tiny_blob';
let $target_value= '$tiny_blob';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TEXT;
let $target_type= VARCHAR(500);
let $source_value= '$blob';
let $target_value= '$blob';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMTEXT;
let $target_type= VARCHAR(500);
let $source_value= '$blob';
let $target_value= '$blob';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= LONGTEXT;
let $target_type= VARCHAR(500);
let $source_value= '$blob';
let $target_value= '$blob';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYTEXT;
let $target_type= CHAR(255);
let $source_value= '$tiny_blob';
let $target_value= '$tiny_blob';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYTEXT;
let $target_type= CHAR(250);
let $source_value= '$tiny_blob';
let $target_value= left('$tiny_blob', 250);
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TEXT;
let $target_type= CHAR(255);
let $source_value= '$blob';
let $target_value= left('$blob', 255);
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= MEDIUMTEXT;
let $target_type= CHAR(255);
let $source_value= '$blob';
let $target_value= left('$blob', 255);
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= LONGTEXT;
let $target_type= CHAR(255);
let $source_value= '$blob';
let $target_value= left('$blob', 255);
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYTEXT;
let $target_type= TINYTEXT;
let $source_value= '$tiny_blob';
let $target_value= '$tiny_blob';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= TINYTEXT;
let $target_type= TEXT;
let $source_value= '$tiny_blob';
let $target_value= '$tiny_blob';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= TEXT;
let $target_type= TINYTEXT;
let $source_value= '$blob';
let $target_value= left('$blob',255);
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= DECIMAL(10,5);
let $source_value= 3.14159;
let $target_value= 3.14159;
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= DECIMAL(10,6);
let $source_value= 3.14159;
let $target_value= 3.141590;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= DECIMAL(11,5);
let $source_value= 3.14159;
let $target_value= 3.14159;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= DECIMAL(11,6);
let $source_value= 3.14159;
let $target_value= 3.141590;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= DECIMAL(10,4);
let $source_value= 3.14159;
let $target_value= 3.1416;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= DECIMAL(9,5);
let $source_value= 3.14159;
let $target_value= 3.14159;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= DECIMAL(9,4);
let $source_value= 3.14159;
let $target_value= 3.1416;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= FLOAT;
let $target_type= DECIMAL(10,5);
let $source_value= 3.15625;
let $target_value= 3.15625;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DOUBLE;
let $target_type= DECIMAL(10,5);
let $source_value= 3.15625;
let $target_value= 3.15625;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= FLOAT;
let $source_value= 3.15625;
let $target_value= 3.15625;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DECIMAL(10,5);
let $target_type= DOUBLE;
let $source_value= 3.15625;
let $target_value= 3.15625;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= FLOAT;
let $target_type= FLOAT;
let $source_value= 3.15625;
let $target_value= 3.15625;
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= DOUBLE;
let $target_type= DOUBLE;
let $source_value= 3.15625;
let $target_value= 3.15625;
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= FLOAT;
let $target_type= DOUBLE;
let $source_value= 3.15625;
let $target_value= 3.15625;
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= DOUBLE;
let $target_type= FLOAT;
let $source_value= 3.15625;
let $target_value= 3.15625;
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIT(5);
let $target_type= BIT(5);
let $source_value= b'11001';
let $target_value= b'11001';
let $can_convert = 1;
source extra/rpl_tests/check_type.inc;
let $source_type= BIT(5);
let $target_type= BIT(6);
let $source_value= b'11001';
let $target_value= b'11001';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIT(6);
let $target_type= BIT(5);
let $source_value= b'111001';
let $target_value= b'11111';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIT(5);
let $target_type= BIT(12);
let $source_value= b'11001';
let $target_value= b'11001';
let $can_convert = $if_is_non_lossy;
source extra/rpl_tests/check_type.inc;
let $source_type= BIT(12);
let $target_type= BIT(5);
let $source_value= b'101100111000';
let $target_value= b'11111';
let $can_convert = $if_is_lossy;
source extra/rpl_tests/check_type.inc;
disable_warnings;
source include/reset_master_and_slave.inc;
enable_warnings;
enable_query_log;

View File

@ -547,9 +547,9 @@ call p_verify_status_increment(0, 0, 0, 0);
--echo # the binary log.
--echo #
select f1();
call p_verify_status_increment(0, 0, 1, 0);
call p_verify_status_increment(1, 0, 1, 0);
commit;
call p_verify_status_increment(0, 0, 1, 0);
call p_verify_status_increment(1, 0, 1, 0);
--echo # 17. Read-only statement, a function changes non-trans-table.
--echo #
@ -557,15 +557,19 @@ call p_verify_status_increment(0, 0, 1, 0);
--echo # non-transactional changes saved in the transaction cache to
--echo # the binary log.
--echo #
--disable_warnings
select f1() from t1;
call p_verify_status_increment(1, 0, 2, 0);
--enable_warnings
call p_verify_status_increment(2, 0, 2, 0);
commit;
call p_verify_status_increment(1, 0, 2, 0);
call p_verify_status_increment(2, 0, 2, 0);
--echo # 18. Read-write statement: UPDATE, change 0 (transactional) rows.
--echo #
select count(*) from t2;
--disable_warnings
update t1 set a=2 where a=f1()+10;
--enable_warnings
select count(*) from t2;
call p_verify_status_increment(2, 0, 2, 0);
commit;
@ -579,7 +583,7 @@ call p_verify_status_increment(2, 0, 2, 0);
drop table t2;
set sql_mode=no_engine_substitution;
create temporary table t2 (a int);
call p_verify_status_increment(0, 0, 0, 0);
call p_verify_status_increment(1, 0, 0, 0);
set sql_mode=default;
--echo # 19. A function changes temp-trans-table.
--echo #
@ -636,9 +640,9 @@ call p_verify_status_increment(2, 0, 1, 0);
--echo # 25. DDL: DROP TEMPORARY TABLE, does not start a transaction
--echo #
drop temporary table t2;
call p_verify_status_increment(0, 0, 0, 0);
call p_verify_status_increment(1, 0, 0, 0);
commit;
call p_verify_status_increment(0, 0, 0, 0);
call p_verify_status_increment(1, 0, 0, 0);
--echo # 26. Verify that SET AUTOCOMMIT issues an implicit commit
--echo #
@ -719,17 +723,17 @@ call p_verify_status_increment(4, 4, 4, 4);
--echo # Sic: no table is created.
create table if not exists t2 (a int) select 6 union select 7;
--echo # Sic: first commits the statement, and then the transaction.
call p_verify_status_increment(4, 4, 4, 4);
call p_verify_status_increment(2, 0, 4, 4);
create table t3 select a from t2;
call p_verify_status_increment(4, 4, 4, 4);
call p_verify_status_increment(2, 0, 4, 4);
alter table t3 add column (b int);
call p_verify_status_increment(2, 0, 2, 0);
alter table t3 rename t4;
call p_verify_status_increment(2, 2, 2, 2);
call p_verify_status_increment(1, 0, 1, 0);
rename table t4 to t3;
call p_verify_status_increment(2, 2, 2, 2);
call p_verify_status_increment(1, 0, 1, 0);
truncate table t3;
call p_verify_status_increment(4, 4, 4, 4);
call p_verify_status_increment(2, 0, 2, 0);
create view v1 as select * from t2;
call p_verify_status_increment(1, 0, 1, 0);
check table t1;

View File

@ -1,3 +1,18 @@
# Copyright (C) 2009 Sun Microsystems, Inc
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Use default setting for mysqld processes
!include default_mysqld.cnf
!include default_client.cnf
@ -9,6 +24,8 @@
log-bin= master-bin
# Run tests with the performance schema instrumentation
loose-enable-performance-schema
[mysqlbinlog]
disable-force-if-open

View File

@ -1,3 +1,18 @@
# Copyright (C) 2009 Sun Microsystems, Inc
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Default values that applies to all MySQL Servers
[mysqld]
open-files-limit= 1024
@ -26,3 +41,6 @@ slave-net-timeout=120
log-bin=mysqld-bin
# Run tests with the performance schema instrumentation
loose-enable-performance-schema

View File

@ -1,7 +1,9 @@
#
# Whether server supports dynamic loading.
#
--require r/have_dynamic_loading.require
if (`SELECT @@have_dynamic_loading != 'YES'`) {
--skip The test requires dynamic loading
}
disable_query_log;
show variables like 'have_dynamic_loading';
enable_query_log;

View File

@ -1,13 +1,21 @@
#
# Check if server has support for loading udf's
# i.e it will support dlopen
# Check if server has support for loading plugins
#
--source include/have_dynamic_loading.inc
if (`SELECT @@have_dynamic_loading != 'YES'`) {
--skip Example plugin requires dynamic loading
}
#
# Check if the variable EXAMPLE_PLUGIN is set
#
--require r/have_example_plugin.require
disable_query_log;
eval select LENGTH('$EXAMPLE_PLUGIN') > 0 as 'have_example_plugin';
if (`SELECT LENGTH('$EXAMPLE_PLUGIN') = 0`) {
--skip Example plugin requires the environment variable \$EXAMPLE_PLUGIN to be set (normally done by mtr)
}
#
# Check if --plugin-dir was setup for exampledb
#
if (`SELECT CONCAT('--plugin-dir=', @@plugin_dir) != '$EXAMPLE_PLUGIN_OPT'`) {
--skip Example plugin requires that --plugin-dir is set to the example plugin dir (either the .opt file does not contain \$EXAMPLE_PLUGIN_OPT or another plugin is in use)
}
enable_query_log;

View File

@ -1,10 +1,9 @@
#
# Check if dynamic loading is supported
# Check if server has support for loading plugins
#
--require r/have_dynamic_loading.require
disable_query_log;
show variables like 'have_dynamic_loading';
enable_query_log;
if (`SELECT @@have_dynamic_loading != 'YES'`) {
--skip Requires dynamic loading
}
#
# Check if the variable SEMISYNC_MASTER_PLUGIN is set

View File

@ -1,13 +1,20 @@
#
# Check if server has support for loading udf's
# i.e it will support dlopen
# Check if server has support for loading plugins
#
--source include/have_dynamic_loading.inc
if (`SELECT @@have_dynamic_loading != 'YES'`) {
--skip simple parser requires dynamic loading
}
#
# Check if the variable SIMPLE_PARSER is set
#
--require r/have_simple_parser.require
disable_query_log;
eval select LENGTH('$SIMPLE_PARSER') > 0 as 'have_simple_parser';
enable_query_log;
if (`SELECT LENGTH('$SIMPLE_PARSER') = 0`) {
--skip simple parser requires the environment variable \$SIMPLE_PARSER to be set (normally done by mtr)
}
#
# Check if --plugin-dir was setup for simple parser
#
if (`SELECT CONCAT('--plugin-dir=', @@plugin_dir) != '$SIMPLE_PARSER_OPT'`) {
--skip simple parser requires that --plugin-dir is set to the udf plugin dir (either the .opt file does not contain \$UDF_EXAMPLE_LIB_OPT or another plugin is in use)
}

View File

@ -1,13 +1,20 @@
#
# Check if server has support for loading udf's
# i.e it will support dlopen
# Check if server has support for loading plugins
#
--source include/have_dynamic_loading.inc
if (`SELECT @@have_dynamic_loading != 'YES'`) {
--skip UDF requires dynamic loading
}
#
# Check if the variable UDF_EXAMPLE_LIB is set
#
--require r/have_udf_example.require
disable_query_log;
eval select LENGTH('$UDF_EXAMPLE_LIB') > 0 as 'have_udf_example_lib';
enable_query_log;
if (`SELECT LENGTH('$UDF_EXAMPLE_LIB') = 0`) {
--skip UDF requires the environment variable \$UDF_EXAMPLE_LIB to be set (normally done by mtr)
}
#
# Check if --plugin-dir was setup for udf
#
if (`SELECT CONCAT('--plugin-dir=', @@plugin_dir) != '$UDF_EXAMPLE_LIB_OPT'`) {
--skip UDF requires that --plugin-dir is set to the udf plugin dir (either the .opt file does not contain \$UDF_EXAMPLE_LIB_OPT or another plugin is in use)
}

View File

@ -55,11 +55,13 @@ connection master;
--echo "Running on the master"
--enable_info
eval CREATE TABLE t1(sum INT, price FLOAT(24)) ENGINE=$engine_type;
--disable_warnings
INSERT INTO t1 VALUES(myfunc_int(100), myfunc_double(50.00));
INSERT INTO t1 VALUES(myfunc_int(10), myfunc_double(5.00));
INSERT INTO t1 VALUES(myfunc_int(200), myfunc_double(25.00));
INSERT INTO t1 VALUES(myfunc_int(1), myfunc_double(500.00));
SELECT * FROM t1 ORDER BY sum;
--enable_warnings
--disable_info
sync_slave_with_master;

View File

@ -1,6 +1,21 @@
#!/usr/bin/perl
# -*- cperl -*-
# Copyright (C) 2009 Sun Microsystems, Inc
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
##############################################################################
#
@ -128,7 +143,9 @@ my $path_config_file; # The generated config file, var/my.cnf
# executables will be used by the test suite.
our $opt_vs_config = $ENV{'MTR_VS_CONFIG'};
my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,rpl_ndb,ndb,innodb";
# If you add a new suite, please check TEST_DIRS in Makefile.am.
#
my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,rpl_ndb,ndb,innodb,perfschema";
my $opt_suites;
our $opt_verbose= 0; # Verbose output, enable with --verbose

View File

@ -3,6 +3,7 @@ Database
information_schema
mtr
mysql
performance_schema
test
show tables in mysql;
Tables_in_mysql

View File

@ -1,3 +1,4 @@
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
DROP TABLE if exists t1,t2,t3,t4,t5,t6;
SET storage_engine=ARCHIVE;
CREATE TABLE t1 (

View File

@ -1,3 +1,4 @@
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
set sql_mode=no_engine_substitution;
set storage_engine = InnoDB;
set autocommit=1;
@ -578,11 +579,11 @@ SUCCESS
select f1();
f1()
2
call p_verify_status_increment(0, 0, 1, 0);
call p_verify_status_increment(1, 0, 1, 0);
SUCCESS
commit;
call p_verify_status_increment(0, 0, 1, 0);
call p_verify_status_increment(1, 0, 1, 0);
SUCCESS
# 17. Read-only statement, a function changes non-trans-table.
@ -595,11 +596,11 @@ select f1() from t1;
f1()
2
2
call p_verify_status_increment(1, 0, 2, 0);
call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
commit;
call p_verify_status_increment(1, 0, 2, 0);
call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
# 18. Read-write statement: UPDATE, change 0 (transactional) rows.
@ -627,7 +628,7 @@ SUCCESS
drop table t2;
set sql_mode=no_engine_substitution;
create temporary table t2 (a int);
call p_verify_status_increment(0, 0, 0, 0);
call p_verify_status_increment(1, 0, 0, 0);
SUCCESS
set sql_mode=default;
@ -708,11 +709,11 @@ SUCCESS
# 25. DDL: DROP TEMPORARY TABLE, does not start a transaction
#
drop temporary table t2;
call p_verify_status_increment(0, 0, 0, 0);
call p_verify_status_increment(1, 0, 0, 0);
SUCCESS
commit;
call p_verify_status_increment(0, 0, 0, 0);
call p_verify_status_increment(1, 0, 0, 0);
SUCCESS
# 26. Verify that SET AUTOCOMMIT issues an implicit commit
@ -829,11 +830,11 @@ create table if not exists t2 (a int) select 6 union select 7;
Warnings:
Note 1050 Table 't2' already exists
# Sic: first commits the statement, and then the transaction.
call p_verify_status_increment(4, 4, 4, 4);
call p_verify_status_increment(2, 0, 4, 4);
SUCCESS
create table t3 select a from t2;
call p_verify_status_increment(4, 4, 4, 4);
call p_verify_status_increment(2, 0, 4, 4);
SUCCESS
alter table t3 add column (b int);
@ -841,15 +842,15 @@ call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
alter table t3 rename t4;
call p_verify_status_increment(2, 2, 2, 2);
call p_verify_status_increment(1, 0, 1, 0);
SUCCESS
rename table t4 to t3;
call p_verify_status_increment(2, 2, 2, 2);
call p_verify_status_increment(1, 0, 1, 0);
SUCCESS
truncate table t3;
call p_verify_status_increment(4, 4, 4, 4);
call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
create view v1 as select * from t2;

View File

@ -277,3 +277,281 @@ hex(a)
EE00
drop table t1;
End of 5.0 tests
#
# Start of 5.5 tests
#
#
# Testing WL#4583 Case conversion in Asian character sets
#
SET NAMES utf8;
SET collation_connection=big5_chinese_ci;
CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
DROP TABLE t1;
CREATE TABLE t1 AS
SELECT concat(head, tail) AS code, ' ' AS a
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
DROP TEMPORARY TABLE head, tail;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`code` varchar(8) DEFAULT NULL,
`a` varchar(1) CHARACTER SET big5 NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT COUNT(*) FROM t1;
COUNT(*)
28672
UPDATE t1 SET a=unhex(code) ORDER BY code;
Warnings:
Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
SELECT COUNT(*) FROM t1 WHERE a<>'';
COUNT(*)
13973
SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
A2CF A2CF A2E9
A2D0 A2D0 A2EA
A2D1 A2D1 A2EB
A2D2 A2D2 A2EC
A2D3 A2D3 A2ED
A2D4 A2D4 A2EE
A2D5 A2D5 A2EF
A2D6 A2D6 A2F0
A2D7 A2D7 A2F1
A2D8 A2D8 A2F2
A2D9 A2D9 A2F3
A2DA A2DA A2F4
A2DB A2DB A2F5
A2DC A2DC A2F6
A2DD A2DD A2F7
A2DE A2DE A2F8
A2DF A2DF A2F9
A2E0 A2E0 A2FA
A2E1 A2E1 A2FB
A2E2 A2E2 A2FC
A2E3 A2E3 A2FD
A2E4 A2E4 A2FE
A2E5 A2E5 A340
A2E6 A2E6 A341
A2E7 A2E7 A342
A2E8 A2E8 A343
A2E9 A2CF A2E9
A2EA A2D0 A2EA
A2EB A2D1 A2EB
A2EC A2D2 A2EC
A2ED A2D3 A2ED
A2EE A2D4 A2EE
A2EF A2D5 A2EF
A2F0 A2D6 A2F0
A2F1 A2D7 A2F1
A2F2 A2D8 A2F2
A2F3 A2D9 A2F3
A2F4 A2DA A2F4
A2F5 A2DB A2F5
A2F6 A2DC A2F6
A2F7 A2DD A2F7
A2F8 A2DE A2F8
A2F9 A2DF A2F9
A2FA A2E0 A2FA
A2FB A2E1 A2FB
A2FC A2E2 A2FC
A2FD A2E3 A2FD
A2FE A2E4 A2FE
A340 A2E5 A340
A341 A2E6 A341
A342 A2E7 A342
A343 A2E8 A343
A344 A344 A35C Α Α α
A345 A345 A35D Β Β β
A346 A346 A35E Γ Γ γ
A347 A347 A35F Δ Δ δ
A348 A348 A360 Ε Ε ε
A349 A349 A361 Ζ Ζ ζ
A34A A34A A362 Η Η η
A34B A34B A363 Θ Θ θ
A34C A34C A364 Ι Ι ι
A34D A34D A365 Κ Κ κ
A34E A34E A366 Λ Λ λ
A34F A34F A367 Μ Μ μ
A350 A350 A368 Ν Ν ν
A351 A351 A369 Ξ Ξ ξ
A352 A352 A36A Ο Ο ο
A353 A353 A36B Π Π π
A354 A354 A36C Ρ Ρ ρ
A355 A355 A36D Σ Σ σ
A356 A356 A36E Τ Τ τ
A357 A357 A36F Υ Υ υ
A358 A358 A370 Φ Φ φ
A359 A359 A371 Χ Χ χ
A35A A35A A372 Ψ Ψ ψ
A35B A35B A373 Ω Ω ω
A35C A344 A35C α Α α
A35D A345 A35D β Β β
A35E A346 A35E γ Γ γ
A35F A347 A35F δ Δ δ
A360 A348 A360 ε Ε ε
A361 A349 A361 ζ Ζ ζ
A362 A34A A362 η Η η
A363 A34B A363 θ Θ θ
A364 A34C A364 ι Ι ι
A365 A34D A365 κ Κ κ
A366 A34E A366 λ Λ λ
A367 A34F A367 μ Μ μ
A368 A350 A368 ν Ν ν
A369 A351 A369 ξ Ξ ξ
A36A A352 A36A ο Ο ο
A36B A353 A36B π Π π
A36C A354 A36C ρ Ρ ρ
A36D A355 A36D σ Σ σ
A36E A356 A36E τ Τ τ
A36F A357 A36F υ Υ υ
A370 A358 A370 φ Φ φ
A371 A359 A371 χ Χ χ
A372 A35A A372 ψ Ψ ψ
A373 A35B A373 ω Ω ω
C7B1 C7B1 C7CC Д Д д
C7B2 C7B2 C7CD Е Е е
C7B3 C7B3 C7CE Ё Ё ё
C7B4 C7B4 C7CF Ж Ж ж
C7B5 C7B5 C7D0 З З з
C7B6 C7B6 C7D1 И И и
C7B7 C7B7 C7D2 Й Й й
C7B8 C7B8 C7D3 К К к
C7B9 C7B9 C7D4 Л Л л
C7BA C7BA C7D5 М М м
C7BB C7BB C7DC У У у
C7BC C7BC C7DD Ф Ф ф
C7BD C7BD C7DE Х Х х
C7BE C7BE C7DF Ц Ц ц
C7BF C7BF C7E0 Ч Ч ч
C7C0 C7C0 C7E1 Ш Ш ш
C7C1 C7C1 C7E2 Щ Щ щ
C7C2 C7C2 C7E3 Ъ Ъ ъ
C7C3 C7C3 C7E4 Ы Ы ы
C7C4 C7C4 C7E5 Ь Ь ь
C7C5 C7C5 C7E6 Э Э э
C7C6 C7C6 C7E7 Ю Ю ю
C7C7 C7C7 C7E8 Я Я я
C7CC C7B1 C7CC д Д д
C7CD C7B2 C7CD е Е е
C7CE C7B3 C7CE ё Ё ё
C7CF C7B4 C7CF ж Ж ж
C7D0 C7B5 C7D0 з З з
C7D1 C7B6 C7D1 и И и
C7D2 C7B7 C7D2 й Й й
C7D3 C7B8 C7D3 к К к
C7D4 C7B9 C7D4 л Л л
C7D5 C7BA C7D5 м М м
C7DC C7BB C7DC у У у
C7DD C7BC C7DD ф Ф ф
C7DE C7BD C7DE х Х х
C7DF C7BE C7DF ц Ц ц
C7E0 C7BF C7E0 ч Ч ч
C7E1 C7C0 C7E1 ш Ш ш
C7E2 C7C1 C7E2 щ Щ щ
C7E3 C7C2 C7E3 ъ Ъ ъ
C7E4 C7C3 C7E4 ы Ы ы
C7E5 C7C4 C7E5 ь Ь ь
C7E6 C7C5 C7E6 э Э э
C7E7 C7C6 C7E7 ю Ю ю
C7E8 C7C7 C7E8 я Я я
SELECT * FROM t1
WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
A2B9
A2BA Ⅱ
A2BB Ⅲ
A2BC Ⅳ
A2BD
A2BE Ⅵ
A2BF Ⅶ
A2C0 Ⅷ
A2C1 Ⅸ
A2C2
SELECT * FROM t1
WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
C7C8 а
C7C9 б
C7CA в
C7CB г
C7D6 н
C7D7 о
C7D8 п
C7D9 р
C7DA с
C7DB т
DROP TABLE t1;
#
# End of 5.5 tests
#

View File

@ -9,11 +9,14 @@ EXECUTE stmt1 USING @var1;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; CREATE TABLE t1(f1 blob)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(0x8300)
master-bin.000001 # Query # # COMMIT
SELECT HEX(f1) FROM t1;
HEX(f1)
8300
DROP table t1;
call mtr.add_suppression('Error in Log_event::read_log_event()');
CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
s2 CHAR(50) CHARACTER SET cp932,
d DECIMAL(10,2))|
@ -29,22 +32,27 @@ HEX(s1) HEX(s2) d
466F6F2773206120426172 ED40ED41ED42 47.93
DROP PROCEDURE bug18293|
DROP TABLE t4|
SHOW BINLOG EVENTS FROM 371|
SHOW BINLOG EVENTS FROM 514|
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 371 Query 1 537 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
master-bin.000001 514 Query 1 581 BEGIN
master-bin.000001 581 Query 1 788 use `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Error in Log_event::read_log_event()' COLLATE 'latin1_swedish_ci'))
master-bin.000001 788 Query 1 856 COMMIT
master-bin.000001 856 Query 1 1019 use `test`; CREATE TABLE t4 (s1 CHAR(50) CHARACTER SET latin1,
s2 CHAR(50) CHARACTER SET cp932,
d DECIMAL(10,2))
master-bin.000001 537 Query 1 786 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `bug18293`(IN ins1 CHAR(50),
master-bin.000001 1019 Query 1 1265 use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `bug18293`(IN ins1 CHAR(50),
IN ins2 CHAR(50) CHARACTER SET cp932,
IN ind DECIMAL(10,2))
BEGIN
INSERT INTO t4 VALUES (ins1, ins2, ind);
END
master-bin.000001 786 Query 1 1050 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93))
master-bin.000001 1050 Query 1 1139 use `test`; DROP PROCEDURE bug18293
master-bin.000001 1139 Query 1 1218 use `test`; DROP TABLE t4
master-bin.000001 1265 Query 1 1333 BEGIN
master-bin.000001 1333 Query 1 1597 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93))
master-bin.000001 1597 Query 1 1666 COMMIT
master-bin.000001 1666 Query 1 1752 use `test`; DROP PROCEDURE bug18293
master-bin.000001 1752 Query 1 1828 use `test`; DROP TABLE t4
End of 5.0 tests
SHOW BINLOG EVENTS FROM 366;
SHOW BINLOG EVENTS FROM 490;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
Bug#44352 UPPER/LOWER function doesn't work correctly on cp932 and sjis environment.
CREATE TABLE t1 (a varchar(16)) character set cp932;
@ -55,3 +63,331 @@ hex(a) hex(lower(a)) hex(upper(a))
8372835E 8372835E 8372835E
DROP TABLE t1;
End of 5.1 tests
#
# Start of 5.5 tests
#
#
# Testing WL#4583 Case conversion in Asian character sets
#
SET NAMES utf8;
SET collation_connection=cp932_japanese_ci;
CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
DROP TABLE t1;
CREATE TABLE t1 AS
SELECT concat(head, tail) AS code, ' ' AS a
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF')
AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
INSERT t1 (code) SELECT head FROM head
WHERE (head BETWEEN 'A1' AND 'DF')
ORDER BY head;
DROP TEMPORARY TABLE head, tail;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`code` varchar(8) DEFAULT NULL,
`a` varchar(1) CHARACTER SET cp932 NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE t1 SET a=unhex(code) ORDER BY code;
Warnings:
Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
SELECT COUNT(*) FROM t1;
COUNT(*)
14623
SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1;
COUNT(*)
63
SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
COUNT(*)
11280
SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1
WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a))
ORDER BY code;
code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
8260 8260 8281
8261 8261 8282
8262 8262 8283
8263 8263 8284
8264 8264 8285
8265 8265 8286
8266 8266 8287
8267 8267 8288
8268 8268 8289
8269 8269 828A
826A 826A 828B
826B 826B 828C
826C 826C 828D
826D 826D 828E
826E 826E 828F
826F 826F 8290
8270 8270 8291
8271 8271 8292
8272 8272 8293
8273 8273 8294
8274 8274 8295
8275 8275 8296
8276 8276 8297
8277 8277 8298
8278 8278 8299
8279 8279 829A
8281 8260 8281
8282 8261 8282
8283 8262 8283
8284 8263 8284
8285 8264 8285
8286 8265 8286
8287 8266 8287
8288 8267 8288
8289 8268 8289
828A 8269 828A
828B 826A 828B
828C 826B 828C
828D 826C 828D
828E 826D 828E
828F 826E 828F
8290 826F 8290
8291 8270 8291
8292 8271 8292
8293 8272 8293
8294 8273 8294
8295 8274 8295
8296 8275 8296
8297 8276 8297
8298 8277 8298
8299 8278 8299
829A 8279 829A
839F 839F 83BF Α Α α
83A0 83A0 83C0 Β Β β
83A1 83A1 83C1 Γ Γ γ
83A2 83A2 83C2 Δ Δ δ
83A3 83A3 83C3 Ε Ε ε
83A4 83A4 83C4 Ζ Ζ ζ
83A5 83A5 83C5 Η Η η
83A6 83A6 83C6 Θ Θ θ
83A7 83A7 83C7 Ι Ι ι
83A8 83A8 83C8 Κ Κ κ
83A9 83A9 83C9 Λ Λ λ
83AA 83AA 83CA Μ Μ μ
83AB 83AB 83CB Ν Ν ν
83AC 83AC 83CC Ξ Ξ ξ
83AD 83AD 83CD Ο Ο ο
83AE 83AE 83CE Π Π π
83AF 83AF 83CF Ρ Ρ ρ
83B0 83B0 83D0 Σ Σ σ
83B1 83B1 83D1 Τ Τ τ
83B2 83B2 83D2 Υ Υ υ
83B3 83B3 83D3 Φ Φ φ
83B4 83B4 83D4 Χ Χ χ
83B5 83B5 83D5 Ψ Ψ ψ
83B6 83B6 83D6 Ω Ω ω
83BF 839F 83BF α Α α
83C0 83A0 83C0 β Β β
83C1 83A1 83C1 γ Γ γ
83C2 83A2 83C2 δ Δ δ
83C3 83A3 83C3 ε Ε ε
83C4 83A4 83C4 ζ Ζ ζ
83C5 83A5 83C5 η Η η
83C6 83A6 83C6 θ Θ θ
83C7 83A7 83C7 ι Ι ι
83C8 83A8 83C8 κ Κ κ
83C9 83A9 83C9 λ Λ λ
83CA 83AA 83CA μ Μ μ
83CB 83AB 83CB ν Ν ν
83CC 83AC 83CC ξ Ξ ξ
83CD 83AD 83CD ο Ο ο
83CE 83AE 83CE π Π π
83CF 83AF 83CF ρ Ρ ρ
83D0 83B0 83D0 σ Σ σ
83D1 83B1 83D1 τ Τ τ
83D2 83B2 83D2 υ Υ υ
83D3 83B3 83D3 φ Φ φ
83D4 83B4 83D4 χ Χ χ
83D5 83B5 83D5 ψ Ψ ψ
83D6 83B6 83D6 ω Ω ω
8440 8440 8470 А А а
8441 8441 8471 Б Б б
8442 8442 8472 В В в
8443 8443 8473 Г Г г
8444 8444 8474 Д Д д
8445 8445 8475 Е Е е
8446 8446 8476 Ё Ё ё
8447 8447 8477 Ж Ж ж
8448 8448 8478 З З з
8449 8449 8479 И И и
844A 844A 847A Й Й й
844B 844B 847B К К к
844C 844C 847C Л Л л
844D 844D 847D М М м
844E 844E 847E Н Н н
844F 844F 8480 О О о
8450 8450 8481 П П п
8451 8451 8482 Р Р р
8452 8452 8483 С С с
8453 8453 8484 Т Т т
8454 8454 8485 У У у
8455 8455 8486 Ф Ф ф
8456 8456 8487 Х Х х
8457 8457 8488 Ц Ц ц
8458 8458 8489 Ч Ч ч
8459 8459 848A Ш Ш ш
845A 845A 848B Щ Щ щ
845B 845B 848C Ъ Ъ ъ
845C 845C 848D Ы Ы ы
845D 845D 848E Ь Ь ь
845E 845E 848F Э Э э
845F 845F 8490 Ю Ю ю
8460 8460 8491 Я Я я
8470 8440 8470 а А а
8471 8441 8471 б Б б
8472 8442 8472 в В в
8473 8443 8473 г Г г
8474 8444 8474 д Д д
8475 8445 8475 е Е е
8476 8446 8476 ё Ё ё
8477 8447 8477 ж Ж ж
8478 8448 8478 з З з
8479 8449 8479 и И и
847A 844A 847A й Й й
847B 844B 847B к К к
847C 844C 847C л Л л
847D 844D 847D м М м
847E 844E 847E н Н н
8480 844F 8480 о О о
8481 8450 8481 п П п
8482 8451 8482 р Р р
8483 8452 8483 с С с
8484 8453 8484 т Т т
8485 8454 8485 у У у
8486 8455 8486 ф Ф ф
8487 8456 8487 х Х х
8488 8457 8488 ц Ц ц
8489 8458 8489 ч Ч ч
848A 8459 848A ш Ш ш
848B 845A 848B щ Щ щ
848C 845B 848C ъ Ъ ъ
848D 845C 848D ы Ы ы
848E 845D 848E ь Ь ь
848F 845E 848F э Э э
8490 845F 8490 ю Ю ю
8491 8460 8491 я Я я
8754 8754 EEEF
8755 8755 EEF0 Ⅱ Ⅱ ⅱ
8756 8756 EEF1 Ⅲ Ⅲ ⅲ
8757 8757 EEF2 Ⅳ Ⅳ ⅳ
8758 8758 EEF3
8759 8759 EEF4 Ⅵ Ⅵ ⅵ
875A 875A EEF5 Ⅶ Ⅶ ⅶ
875B 875B EEF6 Ⅷ Ⅷ ⅷ
875C 875C EEF7 Ⅸ Ⅸ ⅸ
875D 875D EEF8
EEEF 8754 EEEF
EEF0 8755 EEF0 ⅱ Ⅱ ⅱ
EEF1 8756 EEF1 ⅲ Ⅲ ⅲ
EEF2 8757 EEF2 ⅳ Ⅳ ⅳ
EEF3 8758 EEF3
EEF4 8759 EEF4 ⅵ Ⅵ ⅵ
EEF5 875A EEF5 ⅶ Ⅶ ⅶ
EEF6 875B EEF6 ⅷ Ⅷ ⅷ
EEF7 875C EEF7 ⅸ Ⅸ ⅸ
EEF8 875D EEF8
FA40 FA4A FA40
FA41 FA4B FA41 ⅱ Ⅱ ⅱ
FA42 FA4C FA42 ⅲ Ⅲ ⅲ
FA43 FA4D FA43 ⅳ Ⅳ ⅳ
FA44 FA4E FA44
FA45 FA4F FA45 ⅵ Ⅵ ⅵ
FA46 FA50 FA46 ⅶ Ⅶ ⅶ
FA47 FA51 FA47 ⅷ Ⅷ ⅷ
FA48 FA52 FA48 ⅸ Ⅸ ⅸ
FA49 FA53 FA49
FA4A FA4A FA40
FA4B FA4B FA41 Ⅱ Ⅱ ⅱ
FA4C FA4C FA42 Ⅲ Ⅲ ⅲ
FA4D FA4D FA43 Ⅳ Ⅳ ⅳ
FA4E FA4E FA44
FA4F FA4F FA45 Ⅵ Ⅵ ⅵ
FA50 FA50 FA46 Ⅶ Ⅶ ⅶ
FA51 FA51 FA47 Ⅷ Ⅷ ⅷ
FA52 FA52 FA48 Ⅸ Ⅸ ⅸ
FA53 FA53 FA49
SELECT * FROM t1
WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
81F0 Å
SELECT * FROM t1
WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
DROP TABLE t1;
#
# End of 5.5 tests
#

View File

@ -9859,3 +9859,567 @@ hex(convert(_eucjpms 0xA5FE41 using ucs2))
select hex(convert(_eucjpms 0x8FABF841 using ucs2));
hex(convert(_eucjpms 0x8FABF841 using ucs2))
003F0041
#
# Start of 5.5 tests
#
#
# Testing WL#4583 Case conversion in Asian character sets
#
SET NAMES utf8;
SET collation_connection=eucjpms_japanese_ci;
CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
DROP TABLE t1;
CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0;
INSERT INTO t1 (code) SELECT concat('8E', head) FROM head
WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head;
INSERT INTO t1 (code) SELECT concat(head, tail)
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F')
AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
INSERT INTO t1 (code) SELECT concat('8F', head, tail)
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
DROP TEMPORARY TABLE head, tail;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`code` varchar(6) CHARACTER SET eucjpms NOT NULL DEFAULT '',
`a` varchar(1) CHARACTER SET eucjpms NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE t1 SET a=unhex(code) ORDER BY code;
Warnings:
Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
SELECT COUNT(*) FROM t1;
COUNT(*)
56959
SELECT COUNT(*) FROM t1 WHERE a<>'';
COUNT(*)
17735
SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
COUNT(*)
8899
SELECT * FROM t1 WHERE CHAR_LENGTH(a)=2;
code a
SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3;
COUNT(*)
8836
SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code;
code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
8FA6E1 8FA6E1 8FA6F1 Ά Ά ά
8FA6E2 8FA6E2 8FA6F2 Έ Έ έ
8FA6E3 8FA6E3 8FA6F3 Ή Ή ή
8FA6E4 8FA6E4 8FA6F4 Ί Ί ί
8FA6E5 8FA6E5 8FA6F5 Ϊ Ϊ ϊ
8FA6E7 8FA6E7 8FA6F7 Ό Ό ό
8FA6E9 8FA6E9 8FA6F9 Ύ Ύ ύ
8FA6EA 8FA6EA 8FA6FA Ϋ Ϋ ϋ
8FA6EC 8FA6EC 8FA6FC Ώ Ώ ώ
8FA6F1 8FA6E1 8FA6F1 ά Ά ά
8FA6F2 8FA6E2 8FA6F2 έ Έ έ
8FA6F3 8FA6E3 8FA6F3 ή Ή ή
8FA6F4 8FA6E4 8FA6F4 ί Ί ί
8FA6F5 8FA6E5 8FA6F5 ϊ Ϊ ϊ
8FA6F7 8FA6E7 8FA6F7 ό Ό ό
8FA6F8 A6B2 8FA6F8 ς Σ ς
8FA6F9 8FA6E9 8FA6F9 ύ Ύ ύ
8FA6FA 8FA6EA 8FA6FA ϋ Ϋ ϋ
8FA6FC 8FA6EC 8FA6FC ώ Ώ ώ
8FA7C2 8FA7C2 8FA7F2 Ђ Ђ ђ
8FA7C3 8FA7C3 8FA7F3 Ѓ Ѓ ѓ
8FA7C4 8FA7C4 8FA7F4 Є Є є
8FA7C5 8FA7C5 8FA7F5 Ѕ Ѕ ѕ
8FA7C6 8FA7C6 8FA7F6 І І і
8FA7C7 8FA7C7 8FA7F7 Ї Ї ї
8FA7C8 8FA7C8 8FA7F8 Ј Ј ј
8FA7C9 8FA7C9 8FA7F9 Љ Љ љ
8FA7CA 8FA7CA 8FA7FA Њ Њ њ
8FA7CB 8FA7CB 8FA7FB Ћ Ћ ћ
8FA7CC 8FA7CC 8FA7FC Ќ Ќ ќ
8FA7CD 8FA7CD 8FA7FD Ў Ў ў
8FA7CE 8FA7CE 8FA7FE Џ Џ џ
8FA7F2 8FA7C2 8FA7F2 ђ Ђ ђ
8FA7F3 8FA7C3 8FA7F3 ѓ Ѓ ѓ
8FA7F4 8FA7C4 8FA7F4 є Є є
8FA7F5 8FA7C5 8FA7F5 ѕ Ѕ ѕ
8FA7F6 8FA7C6 8FA7F6 і І і
8FA7F7 8FA7C7 8FA7F7 ї Ї ї
8FA7F8 8FA7C8 8FA7F8 ј Ј ј
8FA7F9 8FA7C9 8FA7F9 љ Љ љ
8FA7FA 8FA7CA 8FA7FA њ Њ њ
8FA7FB 8FA7CB 8FA7FB ћ Ћ ћ
8FA7FC 8FA7CC 8FA7FC ќ Ќ ќ
8FA7FD 8FA7CD 8FA7FD ў Ў ў
8FA7FE 8FA7CE 8FA7FE џ Џ џ
8FA9A1 8FA9A1 8FA9C1 Æ Æ æ
8FA9A2 8FA9A2 8FA9C2 Đ Đ đ
8FA9A4 8FA9A4 8FA9C4 Ħ Ħ ħ
8FA9A6 8FA9A6 8FA9C6 IJ IJ ij
8FA9A8 8FA9A8 8FA9C8 Ł Ł ł
8FA9A9 8FA9A9 8FA9C9 Ŀ Ŀ ŀ
8FA9AB 8FA9AB 8FA9CB Ŋ Ŋ ŋ
8FA9AC 8FA9AC 8FA9CC Ø Ø ø
8FA9AD 8FA9AD 8FA9CD Œ Œ œ
8FA9AF 8FA9AF 8FA9CF Ŧ Ŧ ŧ
8FA9B0 8FA9B0 8FA9D0 Þ Þ þ
8FA9C1 8FA9A1 8FA9C1 æ Æ æ
8FA9C2 8FA9A2 8FA9C2 đ Đ đ
8FA9C4 8FA9A4 8FA9C4 ħ Ħ ħ
8FA9C5 49 8FA9C5 ı I ı
8FA9C6 8FA9A6 8FA9C6 ij IJ ij
8FA9C8 8FA9A8 8FA9C8 ł Ł ł
8FA9C9 8FA9A9 8FA9C9 ŀ Ŀ ŀ
8FA9CB 8FA9AB 8FA9CB ŋ Ŋ ŋ
8FA9CC 8FA9AC 8FA9CC ø Ø ø
8FA9CD 8FA9AD 8FA9CD œ Œ œ
8FA9CF 8FA9AF 8FA9CF ŧ Ŧ ŧ
8FA9D0 8FA9B0 8FA9D0 þ Þ þ
8FAAA1 8FAAA1 8FABA1 Á Á á
8FAAA2 8FAAA2 8FABA2 À À à
8FAAA3 8FAAA3 8FABA3 Ä Ä ä
8FAAA4 8FAAA4 8FABA4 Â Â â
8FAAA5 8FAAA5 8FABA5 Ă Ă ă
8FAAA6 8FAAA6 8FABA6 Ǎ Ǎ ǎ
8FAAA7 8FAAA7 8FABA7 Ā Ā ā
8FAAA8 8FAAA8 8FABA8 Ą Ą ą
8FAAA9 8FAAA9 8FABA9 Å Å å
8FAAAA 8FAAAA 8FABAA Ã Ã ã
8FAAAB 8FAAAB 8FABAB Ć Ć ć
8FAAAC 8FAAAC 8FABAC Ĉ Ĉ ĉ
8FAAAD 8FAAAD 8FABAD Č Č č
8FAAAE 8FAAAE 8FABAE Ç Ç ç
8FAAAF 8FAAAF 8FABAF Ċ Ċ ċ
8FAAB0 8FAAB0 8FABB0 Ď Ď ď
8FAAB1 8FAAB1 8FABB1 É É é
8FAAB2 8FAAB2 8FABB2 È È è
8FAAB3 8FAAB3 8FABB3 Ë Ë ë
8FAAB4 8FAAB4 8FABB4 Ê Ê ê
8FAAB5 8FAAB5 8FABB5 Ě Ě ě
8FAAB6 8FAAB6 8FABB6 Ė Ė ė
8FAAB7 8FAAB7 8FABB7 Ē Ē ē
8FAAB8 8FAAB8 8FABB8 Ę Ę ę
8FAABA 8FAABA 8FABBA Ĝ Ĝ ĝ
8FAABB 8FAABB 8FABBB Ğ Ğ ğ
8FAABD 8FAABD 8FABBD Ġ Ġ ġ
8FAABE 8FAABE 8FABBE Ĥ Ĥ ĥ
8FAABF 8FAABF 8FABBF Í Í í
8FAAC0 8FAAC0 8FABC0 Ì Ì ì
8FAAC1 8FAAC1 8FABC1 Ï Ï ï
8FAAC2 8FAAC2 8FABC2 Î Î î
8FAAC3 8FAAC3 8FABC3 Ǐ Ǐ ǐ
8FAAC4 8FAAC4 69 İ İ i
8FAAC5 8FAAC5 8FABC5 Ī Ī ī
8FAAC6 8FAAC6 8FABC6 Į Į į
8FAAC7 8FAAC7 8FABC7 Ĩ Ĩ ĩ
8FAAC8 8FAAC8 8FABC8 Ĵ Ĵ ĵ
8FAAC9 8FAAC9 8FABC9 Ķ Ķ ķ
8FAACA 8FAACA 8FABCA Ĺ Ĺ ĺ
8FAACB 8FAACB 8FABCB Ľ Ľ ľ
8FAACC 8FAACC 8FABCC Ļ Ļ ļ
8FAACD 8FAACD 8FABCD Ń Ń ń
8FAACE 8FAACE 8FABCE Ň Ň ň
8FAACF 8FAACF 8FABCF Ņ Ņ ņ
8FAAD0 8FAAD0 8FABD0 Ñ Ñ ñ
8FAAD1 8FAAD1 8FABD1 Ó Ó ó
8FAAD2 8FAAD2 8FABD2 Ò Ò ò
8FAAD3 8FAAD3 8FABD3 Ö Ö ö
8FAAD4 8FAAD4 8FABD4 Ô Ô ô
8FAAD5 8FAAD5 8FABD5 Ǒ Ǒ ǒ
8FAAD6 8FAAD6 8FABD6 Ő Ő ő
8FAAD7 8FAAD7 8FABD7 Ō Ō ō
8FAAD8 8FAAD8 8FABD8 Õ Õ õ
8FAAD9 8FAAD9 8FABD9 Ŕ Ŕ ŕ
8FAADA 8FAADA 8FABDA Ř Ř ř
8FAADB 8FAADB 8FABDB Ŗ Ŗ ŗ
8FAADC 8FAADC 8FABDC Ś Ś ś
8FAADD 8FAADD 8FABDD Ŝ Ŝ ŝ
8FAADE 8FAADE 8FABDE Š Š š
8FAADF 8FAADF 8FABDF Ş Ş ş
8FAAE0 8FAAE0 8FABE0 Ť Ť ť
8FAAE1 8FAAE1 8FABE1 Ţ Ţ ţ
8FAAE2 8FAAE2 8FABE2 Ú Ú ú
8FAAE3 8FAAE3 8FABE3 Ù Ù ù
8FAAE4 8FAAE4 8FABE4 Ü Ü ü
8FAAE5 8FAAE5 8FABE5 Û Û û
8FAAE6 8FAAE6 8FABE6 Ŭ Ŭ ŭ
8FAAE7 8FAAE7 8FABE7 Ǔ Ǔ ǔ
8FAAE8 8FAAE8 8FABE8 Ű Ű ű
8FAAE9 8FAAE9 8FABE9 Ū Ū ū
8FAAEA 8FAAEA 8FABEA Ų Ų ų
8FAAEB 8FAAEB 8FABEB Ů Ů ů
8FAAEC 8FAAEC 8FABEC Ũ Ũ ũ
8FAAED 8FAAED 8FABED Ǘ Ǘ ǘ
8FAAEE 8FAAEE 8FABEE Ǜ Ǜ ǜ
8FAAEF 8FAAEF 8FABEF Ǚ Ǚ ǚ
8FAAF0 8FAAF0 8FABF0 Ǖ Ǖ ǖ
8FAAF1 8FAAF1 8FABF1 Ŵ Ŵ ŵ
8FAAF2 8FAAF2 8FABF2 Ý Ý ý
8FAAF3 8FAAF3 8FABF3 Ÿ Ÿ ÿ
8FAAF4 8FAAF4 8FABF4 Ŷ Ŷ ŷ
8FAAF5 8FAAF5 8FABF5 Ź Ź ź
8FAAF6 8FAAF6 8FABF6 Ž Ž ž
8FAAF7 8FAAF7 8FABF7 Ż Ż ż
8FABA1 8FAAA1 8FABA1 á Á á
8FABA2 8FAAA2 8FABA2 à À à
8FABA3 8FAAA3 8FABA3 ä Ä ä
8FABA4 8FAAA4 8FABA4 â Â â
8FABA5 8FAAA5 8FABA5 ă Ă ă
8FABA6 8FAAA6 8FABA6 ǎ Ǎ ǎ
8FABA7 8FAAA7 8FABA7 ā Ā ā
8FABA8 8FAAA8 8FABA8 ą Ą ą
8FABA9 8FAAA9 8FABA9 å Å å
8FABAA 8FAAAA 8FABAA ã Ã ã
8FABAB 8FAAAB 8FABAB ć Ć ć
8FABAC 8FAAAC 8FABAC ĉ Ĉ ĉ
8FABAD 8FAAAD 8FABAD č Č č
8FABAE 8FAAAE 8FABAE ç Ç ç
8FABAF 8FAAAF 8FABAF ċ Ċ ċ
8FABB0 8FAAB0 8FABB0 ď Ď ď
8FABB1 8FAAB1 8FABB1 é É é
8FABB2 8FAAB2 8FABB2 è È è
8FABB3 8FAAB3 8FABB3 ë Ë ë
8FABB4 8FAAB4 8FABB4 ê Ê ê
8FABB5 8FAAB5 8FABB5 ě Ě ě
8FABB6 8FAAB6 8FABB6 ė Ė ė
8FABB7 8FAAB7 8FABB7 ē Ē ē
8FABB8 8FAAB8 8FABB8 ę Ę ę
8FABBA 8FAABA 8FABBA ĝ Ĝ ĝ
8FABBB 8FAABB 8FABBB ğ Ğ ğ
8FABBD 8FAABD 8FABBD ġ Ġ ġ
8FABBE 8FAABE 8FABBE ĥ Ĥ ĥ
8FABBF 8FAABF 8FABBF í Í í
8FABC0 8FAAC0 8FABC0 ì Ì ì
8FABC1 8FAAC1 8FABC1 ï Ï ï
8FABC2 8FAAC2 8FABC2 î Î î
8FABC3 8FAAC3 8FABC3 ǐ Ǐ ǐ
8FABC5 8FAAC5 8FABC5 ī Ī ī
8FABC6 8FAAC6 8FABC6 į Į į
8FABC7 8FAAC7 8FABC7 ĩ Ĩ ĩ
8FABC8 8FAAC8 8FABC8 ĵ Ĵ ĵ
8FABC9 8FAAC9 8FABC9 ķ Ķ ķ
8FABCA 8FAACA 8FABCA ĺ Ĺ ĺ
8FABCB 8FAACB 8FABCB ľ Ľ ľ
8FABCC 8FAACC 8FABCC ļ Ļ ļ
8FABCD 8FAACD 8FABCD ń Ń ń
8FABCE 8FAACE 8FABCE ň Ň ň
8FABCF 8FAACF 8FABCF ņ Ņ ņ
8FABD0 8FAAD0 8FABD0 ñ Ñ ñ
8FABD1 8FAAD1 8FABD1 ó Ó ó
8FABD2 8FAAD2 8FABD2 ò Ò ò
8FABD3 8FAAD3 8FABD3 ö Ö ö
8FABD4 8FAAD4 8FABD4 ô Ô ô
8FABD5 8FAAD5 8FABD5 ǒ Ǒ ǒ
8FABD6 8FAAD6 8FABD6 ő Ő ő
8FABD7 8FAAD7 8FABD7 ō Ō ō
8FABD8 8FAAD8 8FABD8 õ Õ õ
8FABD9 8FAAD9 8FABD9 ŕ Ŕ ŕ
8FABDA 8FAADA 8FABDA ř Ř ř
8FABDB 8FAADB 8FABDB ŗ Ŗ ŗ
8FABDC 8FAADC 8FABDC ś Ś ś
8FABDD 8FAADD 8FABDD ŝ Ŝ ŝ
8FABDE 8FAADE 8FABDE š Š š
8FABDF 8FAADF 8FABDF ş Ş ş
8FABE0 8FAAE0 8FABE0 ť Ť ť
8FABE1 8FAAE1 8FABE1 ţ Ţ ţ
8FABE2 8FAAE2 8FABE2 ú Ú ú
8FABE3 8FAAE3 8FABE3 ù Ù ù
8FABE4 8FAAE4 8FABE4 ü Ü ü
8FABE5 8FAAE5 8FABE5 û Û û
8FABE6 8FAAE6 8FABE6 ŭ Ŭ ŭ
8FABE7 8FAAE7 8FABE7 ǔ Ǔ ǔ
8FABE8 8FAAE8 8FABE8 ű Ű ű
8FABE9 8FAAE9 8FABE9 ū Ū ū
8FABEA 8FAAEA 8FABEA ų Ų ų
8FABEB 8FAAEB 8FABEB ů Ů ů
8FABEC 8FAAEC 8FABEC ũ Ũ ũ
8FABED 8FAAED 8FABED ǘ Ǘ ǘ
8FABEE 8FAAEE 8FABEE ǜ Ǜ ǜ
8FABEF 8FAAEF 8FABEF ǚ Ǚ ǚ
8FABF0 8FAAF0 8FABF0 ǖ Ǖ ǖ
8FABF1 8FAAF1 8FABF1 ŵ Ŵ ŵ
8FABF2 8FAAF2 8FABF2 ý Ý ý
8FABF3 8FAAF3 8FABF3 ÿ Ÿ ÿ
8FABF4 8FAAF4 8FABF4 ŷ Ŷ ŷ
8FABF5 8FAAF5 8FABF5 ź Ź ź
8FABF6 8FAAF6 8FABF6 ž Ž ž
8FABF7 8FAAF7 8FABF7 ż Ż ż
8FF3F3 8FF3FD 8FF3F3
8FF3F4 8FF3FE 8FF3F4 ⅱ Ⅱ ⅱ
8FF3F5 8FF4A1 8FF3F5 ⅲ Ⅲ ⅲ
8FF3F6 8FF4A2 8FF3F6 ⅳ Ⅳ ⅳ
8FF3F7 8FF4A3 8FF3F7
8FF3F8 8FF4A4 8FF3F8 ⅵ Ⅵ ⅵ
8FF3F9 8FF4A5 8FF3F9 ⅶ Ⅶ ⅶ
8FF3FA 8FF4A6 8FF3FA ⅷ Ⅷ ⅷ
8FF3FB 8FF4A7 8FF3FB ⅸ Ⅸ ⅸ
8FF3FC 8FF4A8 8FF3FC
8FF3FD 8FF3FD 8FF3F3
8FF3FE 8FF3FE 8FF3F4 Ⅱ Ⅱ ⅱ
8FF4A1 8FF4A1 8FF3F5 Ⅲ Ⅲ ⅲ
8FF4A2 8FF4A2 8FF3F6 Ⅳ Ⅳ ⅳ
8FF4A3 8FF4A3 8FF3F7
8FF4A4 8FF4A4 8FF3F8 Ⅵ Ⅵ ⅵ
8FF4A5 8FF4A5 8FF3F9 Ⅶ Ⅶ ⅶ
8FF4A6 8FF4A6 8FF3FA Ⅷ Ⅷ ⅷ
8FF4A7 8FF4A7 8FF3FB Ⅸ Ⅸ ⅸ
8FF4A8 8FF4A8 8FF3FC
A2F2 A2F2 8FABA9 Å Å å
A3C1 A3C1 A3E1
A3C2 A3C2 A3E2
A3C3 A3C3 A3E3
A3C4 A3C4 A3E4
A3C5 A3C5 A3E5
A3C6 A3C6 A3E6
A3C7 A3C7 A3E7
A3C8 A3C8 A3E8
A3C9 A3C9 A3E9
A3CA A3CA A3EA
A3CB A3CB A3EB
A3CC A3CC A3EC
A3CD A3CD A3ED
A3CE A3CE A3EE
A3CF A3CF A3EF
A3D0 A3D0 A3F0
A3D1 A3D1 A3F1
A3D2 A3D2 A3F2
A3D3 A3D3 A3F3
A3D4 A3D4 A3F4
A3D5 A3D5 A3F5
A3D6 A3D6 A3F6
A3D7 A3D7 A3F7
A3D8 A3D8 A3F8
A3D9 A3D9 A3F9
A3DA A3DA A3FA
A3E1 A3C1 A3E1
A3E2 A3C2 A3E2
A3E3 A3C3 A3E3
A3E4 A3C4 A3E4
A3E5 A3C5 A3E5
A3E6 A3C6 A3E6
A3E7 A3C7 A3E7
A3E8 A3C8 A3E8
A3E9 A3C9 A3E9
A3EA A3CA A3EA
A3EB A3CB A3EB
A3EC A3CC A3EC
A3ED A3CD A3ED
A3EE A3CE A3EE
A3EF A3CF A3EF
A3F0 A3D0 A3F0
A3F1 A3D1 A3F1
A3F2 A3D2 A3F2
A3F3 A3D3 A3F3
A3F4 A3D4 A3F4
A3F5 A3D5 A3F5
A3F6 A3D6 A3F6
A3F7 A3D7 A3F7
A3F8 A3D8 A3F8
A3F9 A3D9 A3F9
A3FA A3DA A3FA
A6A1 A6A1 A6C1 Α Α α
A6A2 A6A2 A6C2 Β Β β
A6A3 A6A3 A6C3 Γ Γ γ
A6A4 A6A4 A6C4 Δ Δ δ
A6A5 A6A5 A6C5 Ε Ε ε
A6A6 A6A6 A6C6 Ζ Ζ ζ
A6A7 A6A7 A6C7 Η Η η
A6A8 A6A8 A6C8 Θ Θ θ
A6A9 A6A9 A6C9 Ι Ι ι
A6AA A6AA A6CA Κ Κ κ
A6AB A6AB A6CB Λ Λ λ
A6AC A6AC A6CC Μ Μ μ
A6AD A6AD A6CD Ν Ν ν
A6AE A6AE A6CE Ξ Ξ ξ
A6AF A6AF A6CF Ο Ο ο
A6B0 A6B0 A6D0 Π Π π
A6B1 A6B1 A6D1 Ρ Ρ ρ
A6B2 A6B2 A6D2 Σ Σ σ
A6B3 A6B3 A6D3 Τ Τ τ
A6B4 A6B4 A6D4 Υ Υ υ
A6B5 A6B5 A6D5 Φ Φ φ
A6B6 A6B6 A6D6 Χ Χ χ
A6B7 A6B7 A6D7 Ψ Ψ ψ
A6B8 A6B8 A6D8 Ω Ω ω
A6C1 A6A1 A6C1 α Α α
A6C2 A6A2 A6C2 β Β β
A6C3 A6A3 A6C3 γ Γ γ
A6C4 A6A4 A6C4 δ Δ δ
A6C5 A6A5 A6C5 ε Ε ε
A6C6 A6A6 A6C6 ζ Ζ ζ
A6C7 A6A7 A6C7 η Η η
A6C8 A6A8 A6C8 θ Θ θ
A6C9 A6A9 A6C9 ι Ι ι
A6CA A6AA A6CA κ Κ κ
A6CB A6AB A6CB λ Λ λ
A6CC A6AC A6CC μ Μ μ
A6CD A6AD A6CD ν Ν ν
A6CE A6AE A6CE ξ Ξ ξ
A6CF A6AF A6CF ο Ο ο
A6D0 A6B0 A6D0 π Π π
A6D1 A6B1 A6D1 ρ Ρ ρ
A6D2 A6B2 A6D2 σ Σ σ
A6D3 A6B3 A6D3 τ Τ τ
A6D4 A6B4 A6D4 υ Υ υ
A6D5 A6B5 A6D5 φ Φ φ
A6D6 A6B6 A6D6 χ Χ χ
A6D7 A6B7 A6D7 ψ Ψ ψ
A6D8 A6B8 A6D8 ω Ω ω
A7A1 A7A1 A7D1 А А а
A7A2 A7A2 A7D2 Б Б б
A7A3 A7A3 A7D3 В В в
A7A4 A7A4 A7D4 Г Г г
A7A5 A7A5 A7D5 Д Д д
A7A6 A7A6 A7D6 Е Е е
A7A7 A7A7 A7D7 Ё Ё ё
A7A8 A7A8 A7D8 Ж Ж ж
A7A9 A7A9 A7D9 З З з
A7AA A7AA A7DA И И и
A7AB A7AB A7DB Й Й й
A7AC A7AC A7DC К К к
A7AD A7AD A7DD Л Л л
A7AE A7AE A7DE М М м
A7AF A7AF A7DF Н Н н
A7B0 A7B0 A7E0 О О о
A7B1 A7B1 A7E1 П П п
A7B2 A7B2 A7E2 Р Р р
A7B3 A7B3 A7E3 С С с
A7B4 A7B4 A7E4 Т Т т
A7B5 A7B5 A7E5 У У у
A7B6 A7B6 A7E6 Ф Ф ф
A7B7 A7B7 A7E7 Х Х х
A7B8 A7B8 A7E8 Ц Ц ц
A7B9 A7B9 A7E9 Ч Ч ч
A7BA A7BA A7EA Ш Ш ш
A7BB A7BB A7EB Щ Щ щ
A7BC A7BC A7EC Ъ Ъ ъ
A7BD A7BD A7ED Ы Ы ы
A7BE A7BE A7EE Ь Ь ь
A7BF A7BF A7EF Э Э э
A7C0 A7C0 A7F0 Ю Ю ю
A7C1 A7C1 A7F1 Я Я я
A7D1 A7A1 A7D1 а А а
A7D2 A7A2 A7D2 б Б б
A7D3 A7A3 A7D3 в В в
A7D4 A7A4 A7D4 г Г г
A7D5 A7A5 A7D5 д Д д
A7D6 A7A6 A7D6 е Е е
A7D7 A7A7 A7D7 ё Ё ё
A7D8 A7A8 A7D8 ж Ж ж
A7D9 A7A9 A7D9 з З з
A7DA A7AA A7DA и И и
A7DB A7AB A7DB й Й й
A7DC A7AC A7DC к К к
A7DD A7AD A7DD л Л л
A7DE A7AE A7DE м М м
A7DF A7AF A7DF н Н н
A7E0 A7B0 A7E0 о О о
A7E1 A7B1 A7E1 п П п
A7E2 A7B2 A7E2 р Р р
A7E3 A7B3 A7E3 с С с
A7E4 A7B4 A7E4 т Т т
A7E5 A7B5 A7E5 у У у
A7E6 A7B6 A7E6 ф Ф ф
A7E7 A7B7 A7E7 х Х х
A7E8 A7B8 A7E8 ц Ц ц
A7E9 A7B9 A7E9 ч Ч ч
A7EA A7BA A7EA ш Ш ш
A7EB A7BB A7EB щ Щ щ
A7EC A7BC A7EC ъ Ъ ъ
A7ED A7BD A7ED ы Ы ы
A7EE A7BE A7EE ь Ь ь
A7EF A7BF A7EF э Э э
A7F0 A7C0 A7F0 ю Ю ю
A7F1 A7C1 A7F1 я Я я
ADB5 ADB5 8FF3F3
ADB6 ADB6 8FF3F4 Ⅱ Ⅱ ⅱ
ADB7 ADB7 8FF3F5 Ⅲ Ⅲ ⅲ
ADB8 ADB8 8FF3F6 Ⅳ Ⅳ ⅳ
ADB9 ADB9 8FF3F7
ADBA ADBA 8FF3F8 Ⅵ Ⅵ ⅵ
ADBB ADBB 8FF3F9 Ⅶ Ⅶ ⅶ
ADBC ADBC 8FF3FA Ⅷ Ⅷ ⅷ
ADBD ADBD 8FF3FB Ⅸ Ⅸ ⅸ
ADBE ADBE 8FF3FC
SELECT * FROM t1
WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
8FAABC Ģ
SELECT * FROM t1
WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
8FA9C3 ð
8FABB9 ǵ
DROP TABLE t1;
#
# End of 5.5 tests
#

View File

@ -24255,3 +24255,350 @@ FDFD FDFD E7BEB2 FDFD
FDFE FDFE E8A9B0 FDFE
DROP TABLE t1, t2;
End of 5.4 tests
#
# Start of 5.5 tests
#
#
# Testing WL#4583 Case conversion in Asian character sets
#
SET NAMES utf8;
SET collation_connection=euckr_korean_ci;
CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
DROP TABLE t1;
CREATE TABLE t1 AS
SELECT concat(head, tail) AS code, ' ' AS a
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
DROP TEMPORARY TABLE head, tail;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`code` varchar(8) DEFAULT NULL,
`a` varchar(1) CHARACTER SET euckr NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE t1 SET a=unhex(code) ORDER BY code;
Warnings:
Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
SELECT COUNT(*) FROM t1 WHERE a<>'';
COUNT(*)
22428
SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
A3C1 A3C1 A3E1
A3C2 A3C2 A3E2
A3C3 A3C3 A3E3
A3C4 A3C4 A3E4
A3C5 A3C5 A3E5
A3C6 A3C6 A3E6
A3C7 A3C7 A3E7
A3C8 A3C8 A3E8
A3C9 A3C9 A3E9
A3CA A3CA A3EA
A3CB A3CB A3EB
A3CC A3CC A3EC
A3CD A3CD A3ED
A3CE A3CE A3EE
A3CF A3CF A3EF
A3D0 A3D0 A3F0
A3D1 A3D1 A3F1
A3D2 A3D2 A3F2
A3D3 A3D3 A3F3
A3D4 A3D4 A3F4
A3D5 A3D5 A3F5
A3D6 A3D6 A3F6
A3D7 A3D7 A3F7
A3D8 A3D8 A3F8
A3D9 A3D9 A3F9
A3DA A3DA A3FA
A3E1 A3C1 A3E1
A3E2 A3C2 A3E2
A3E3 A3C3 A3E3
A3E4 A3C4 A3E4
A3E5 A3C5 A3E5
A3E6 A3C6 A3E6
A3E7 A3C7 A3E7
A3E8 A3C8 A3E8
A3E9 A3C9 A3E9
A3EA A3CA A3EA
A3EB A3CB A3EB
A3EC A3CC A3EC
A3ED A3CD A3ED
A3EE A3CE A3EE
A3EF A3CF A3EF
A3F0 A3D0 A3F0
A3F1 A3D1 A3F1
A3F2 A3D2 A3F2
A3F3 A3D3 A3F3
A3F4 A3D4 A3F4
A3F5 A3D5 A3F5
A3F6 A3D6 A3F6
A3F7 A3D7 A3F7
A3F8 A3D8 A3F8
A3F9 A3D9 A3F9
A3FA A3DA A3FA
A5A1 A5B0 A5A1
A5A2 A5B1 A5A2 ⅱ Ⅱ ⅱ
A5A3 A5B2 A5A3 ⅲ Ⅲ ⅲ
A5A4 A5B3 A5A4 ⅳ Ⅳ ⅳ
A5A5 A5B4 A5A5
A5A6 A5B5 A5A6 ⅵ Ⅵ ⅵ
A5A7 A5B6 A5A7 ⅶ Ⅶ ⅶ
A5A8 A5B7 A5A8 ⅷ Ⅷ ⅷ
A5A9 A5B8 A5A9 ⅸ Ⅸ ⅸ
A5AA A5B9 A5AA
A5B0 A5B0 A5A1
A5B1 A5B1 A5A2 Ⅱ Ⅱ ⅱ
A5B2 A5B2 A5A3 Ⅲ Ⅲ ⅲ
A5B3 A5B3 A5A4 Ⅳ Ⅳ ⅳ
A5B4 A5B4 A5A5
A5B5 A5B5 A5A6 Ⅵ Ⅵ ⅵ
A5B6 A5B6 A5A7 Ⅶ Ⅶ ⅶ
A5B7 A5B7 A5A8 Ⅷ Ⅷ ⅷ
A5B8 A5B8 A5A9 Ⅸ Ⅸ ⅸ
A5B9 A5B9 A5AA
A5C1 A5C1 A5E1 Α Α α
A5C2 A5C2 A5E2 Β Β β
A5C3 A5C3 A5E3 Γ Γ γ
A5C4 A5C4 A5E4 Δ Δ δ
A5C5 A5C5 A5E5 Ε Ε ε
A5C6 A5C6 A5E6 Ζ Ζ ζ
A5C7 A5C7 A5E7 Η Η η
A5C8 A5C8 A5E8 Θ Θ θ
A5C9 A5C9 A5E9 Ι Ι ι
A5CA A5CA A5EA Κ Κ κ
A5CB A5CB A5EB Λ Λ λ
A5CC A5CC A5EC Μ Μ μ
A5CD A5CD A5ED Ν Ν ν
A5CE A5CE A5EE Ξ Ξ ξ
A5CF A5CF A5EF Ο Ο ο
A5D0 A5D0 A5F0 Π Π π
A5D1 A5D1 A5F1 Ρ Ρ ρ
A5D2 A5D2 A5F2 Σ Σ σ
A5D3 A5D3 A5F3 Τ Τ τ
A5D4 A5D4 A5F4 Υ Υ υ
A5D5 A5D5 A5F5 Φ Φ φ
A5D6 A5D6 A5F6 Χ Χ χ
A5D7 A5D7 A5F7 Ψ Ψ ψ
A5D8 A5D8 A5F8 Ω Ω ω
A5E1 A5C1 A5E1 α Α α
A5E2 A5C2 A5E2 β Β β
A5E3 A5C3 A5E3 γ Γ γ
A5E4 A5C4 A5E4 δ Δ δ
A5E5 A5C5 A5E5 ε Ε ε
A5E6 A5C6 A5E6 ζ Ζ ζ
A5E7 A5C7 A5E7 η Η η
A5E8 A5C8 A5E8 θ Θ θ
A5E9 A5C9 A5E9 ι Ι ι
A5EA A5CA A5EA κ Κ κ
A5EB A5CB A5EB λ Λ λ
A5EC A5CC A5EC μ Μ μ
A5ED A5CD A5ED ν Ν ν
A5EE A5CE A5EE ξ Ξ ξ
A5EF A5CF A5EF ο Ο ο
A5F0 A5D0 A5F0 π Π π
A5F1 A5D1 A5F1 ρ Ρ ρ
A5F2 A5D2 A5F2 σ Σ σ
A5F3 A5D3 A5F3 τ Τ τ
A5F4 A5D4 A5F4 υ Υ υ
A5F5 A5D5 A5F5 φ Φ φ
A5F6 A5D6 A5F6 χ Χ χ
A5F7 A5D7 A5F7 ψ Ψ ψ
A5F8 A5D8 A5F8 ω Ω ω
A7D9 A7D9 A5F8 Ω Ω ω
A8A1 A8A1 A9A1 Æ Æ æ
A8A2 A8A2 A9A3 Ð Ð ð
A8A4 A8A4 A9A4 Ħ Ħ ħ
A8A6 A8A6 A9A6 IJ IJ ij
A8A8 A8A8 A9A8 Ŀ Ŀ ŀ
A8A9 A8A9 A9A9 Ł Ł ł
A8AA A8AA A9AA Ø Ø ø
A8AB A8AB A9AB Œ Œ œ
A8AD A8AD A9AD Þ Þ þ
A8AE A8AE A9AE Ŧ Ŧ ŧ
A8AF A8AF A9AF Ŋ Ŋ ŋ
A9A1 A8A1 A9A1 æ Æ æ
A9A3 A8A2 A9A3 ð Ð ð
A9A4 A8A4 A9A4 ħ Ħ ħ
A9A5 49 A9A5 ı I ı
A9A6 A8A6 A9A6 ij IJ ij
A9A8 A8A8 A9A8 ŀ Ŀ ŀ
A9A9 A8A9 A9A9 ł Ł ł
A9AA A8AA A9AA ø Ø ø
A9AB A8AB A9AB œ Œ œ
A9AD A8AD A9AD þ Þ þ
A9AE A8AE A9AE ŧ Ŧ ŧ
A9AF A8AF A9AF ŋ Ŋ ŋ
ACA1 ACA1 ACD1 А А а
ACA2 ACA2 ACD2 Б Б б
ACA3 ACA3 ACD3 В В в
ACA4 ACA4 ACD4 Г Г г
ACA5 ACA5 ACD5 Д Д д
ACA6 ACA6 ACD6 Е Е е
ACA7 ACA7 ACD7 Ё Ё ё
ACA8 ACA8 ACD8 Ж Ж ж
ACA9 ACA9 ACD9 З З з
ACAA ACAA ACDA И И и
ACAB ACAB ACDB Й Й й
ACAC ACAC ACDC К К к
ACAD ACAD ACDD Л Л л
ACAE ACAE ACDE М М м
ACAF ACAF ACDF Н Н н
ACB0 ACB0 ACE0 О О о
ACB1 ACB1 ACE1 П П п
ACB2 ACB2 ACE2 Р Р р
ACB3 ACB3 ACE3 С С с
ACB4 ACB4 ACE4 Т Т т
ACB5 ACB5 ACE5 У У у
ACB6 ACB6 ACE6 Ф Ф ф
ACB7 ACB7 ACE7 Х Х х
ACB8 ACB8 ACE8 Ц Ц ц
ACB9 ACB9 ACE9 Ч Ч ч
ACBA ACBA ACEA Ш Ш ш
ACBB ACBB ACEB Щ Щ щ
ACBC ACBC ACEC Ъ Ъ ъ
ACBD ACBD ACED Ы Ы ы
ACBE ACBE ACEE Ь Ь ь
ACBF ACBF ACEF Э Э э
ACC0 ACC0 ACF0 Ю Ю ю
ACC1 ACC1 ACF1 Я Я я
ACD1 ACA1 ACD1 а А а
ACD2 ACA2 ACD2 б Б б
ACD3 ACA3 ACD3 в В в
ACD4 ACA4 ACD4 г Г г
ACD5 ACA5 ACD5 д Д д
ACD6 ACA6 ACD6 е Е е
ACD7 ACA7 ACD7 ё Ё ё
ACD8 ACA8 ACD8 ж Ж ж
ACD9 ACA9 ACD9 з З з
ACDA ACAA ACDA и И и
ACDB ACAB ACDB й Й й
ACDC ACAC ACDC к К к
ACDD ACAD ACDD л Л л
ACDE ACAE ACDE м М м
ACDF ACAF ACDF н Н н
ACE0 ACB0 ACE0 о О о
ACE1 ACB1 ACE1 п П п
ACE2 ACB2 ACE2 р Р р
ACE3 ACB3 ACE3 с С с
ACE4 ACB4 ACE4 т Т т
ACE5 ACB5 ACE5 у У у
ACE6 ACB6 ACE6 ф Ф ф
ACE7 ACB7 ACE7 х Х х
ACE8 ACB8 ACE8 ц Ц ц
ACE9 ACB9 ACE9 ч Ч ч
ACEA ACBA ACEA ш Ш ш
ACEB ACBB ACEB щ Щ щ
ACEC ACBC ACEC ъ Ъ ъ
ACED ACBD ACED ы Ы ы
ACEE ACBE ACEE ь Ь ь
ACEF ACBF ACEF э Э э
ACF0 ACC0 ACF0 ю Ю ю
ACF1 ACC1 ACF1 я Я я
SELECT * FROM t1
WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
A1CA Å
SELECT * FROM t1
WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
A8CD ⓐ
A8CE ⓑ
A8CF ⓒ
A8D0 ⓓ
A8D1 ⓔ
A8D2 ⓕ
A8D3 ⓖ
A8D4 ⓗ
A8D5 ⓘ
A8D6 ⓙ
A8D7 ⓚ
A8D8 ⓛ
A8D9 ⓜ
A8DA ⓝ
A8DB ⓞ
A8DC ⓟ
A8DD ⓠ
A8DE ⓡ
A8DF ⓢ
A8E0 ⓣ
A8E1 ⓤ
A8E2 ⓥ
A8E3 ⓦ
A8E4 ⓧ
A8E5 ⓨ
A8E6 ⓩ
A9A2 đ
DROP TABLE t1;
#
# End of 5.5 tests
#

View File

@ -235,3 +235,316 @@ hex(a)
A2A1
D7FE
DROP TABLE t1;
#
# Start of 5.5 tests
#
#
# Testing WL#4583 Case conversion in Asian character sets
#
SET NAMES utf8;
SET collation_connection=gb2312_chinese_ci;
CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
DROP TABLE t1;
CREATE TABLE t1 AS
SELECT concat(head, tail) AS code, ' ' AS a
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
DROP TEMPORARY TABLE head, tail;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`code` varchar(8) DEFAULT NULL,
`a` varchar(1) CHARACTER SET gb2312 NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE t1 SET a=unhex(code) ORDER BY code;
Warnings:
Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
SELECT COUNT(*) FROM t1 WHERE a<>'';
COUNT(*)
8178
SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
A3C1 A3C1 A3E1
A3C2 A3C2 A3E2
A3C3 A3C3 A3E3
A3C4 A3C4 A3E4
A3C5 A3C5 A3E5
A3C6 A3C6 A3E6
A3C7 A3C7 A3E7
A3C8 A3C8 A3E8
A3C9 A3C9 A3E9
A3CA A3CA A3EA
A3CB A3CB A3EB
A3CC A3CC A3EC
A3CD A3CD A3ED
A3CE A3CE A3EE
A3CF A3CF A3EF
A3D0 A3D0 A3F0
A3D1 A3D1 A3F1
A3D2 A3D2 A3F2
A3D3 A3D3 A3F3
A3D4 A3D4 A3F4
A3D5 A3D5 A3F5
A3D6 A3D6 A3F6
A3D7 A3D7 A3F7
A3D8 A3D8 A3F8
A3D9 A3D9 A3F9
A3DA A3DA A3FA
A3E1 A3C1 A3E1
A3E2 A3C2 A3E2
A3E3 A3C3 A3E3
A3E4 A3C4 A3E4
A3E5 A3C5 A3E5
A3E6 A3C6 A3E6
A3E7 A3C7 A3E7
A3E8 A3C8 A3E8
A3E9 A3C9 A3E9
A3EA A3CA A3EA
A3EB A3CB A3EB
A3EC A3CC A3EC
A3ED A3CD A3ED
A3EE A3CE A3EE
A3EF A3CF A3EF
A3F0 A3D0 A3F0
A3F1 A3D1 A3F1
A3F2 A3D2 A3F2
A3F3 A3D3 A3F3
A3F4 A3D4 A3F4
A3F5 A3D5 A3F5
A3F6 A3D6 A3F6
A3F7 A3D7 A3F7
A3F8 A3D8 A3F8
A3F9 A3D9 A3F9
A3FA A3DA A3FA
A6A1 A6A1 A6C1 Α Α α
A6A2 A6A2 A6C2 Β Β β
A6A3 A6A3 A6C3 Γ Γ γ
A6A4 A6A4 A6C4 Δ Δ δ
A6A5 A6A5 A6C5 Ε Ε ε
A6A6 A6A6 A6C6 Ζ Ζ ζ
A6A7 A6A7 A6C7 Η Η η
A6A8 A6A8 A6C8 Θ Θ θ
A6A9 A6A9 A6C9 Ι Ι ι
A6AA A6AA A6CA Κ Κ κ
A6AB A6AB A6CB Λ Λ λ
A6AC A6AC A6CC Μ Μ μ
A6AD A6AD A6CD Ν Ν ν
A6AE A6AE A6CE Ξ Ξ ξ
A6AF A6AF A6CF Ο Ο ο
A6B0 A6B0 A6D0 Π Π π
A6B1 A6B1 A6D1 Ρ Ρ ρ
A6B2 A6B2 A6D2 Σ Σ σ
A6B3 A6B3 A6D3 Τ Τ τ
A6B4 A6B4 A6D4 Υ Υ υ
A6B5 A6B5 A6D5 Φ Φ φ
A6B6 A6B6 A6D6 Χ Χ χ
A6B7 A6B7 A6D7 Ψ Ψ ψ
A6B8 A6B8 A6D8 Ω Ω ω
A6C1 A6A1 A6C1 α Α α
A6C2 A6A2 A6C2 β Β β
A6C3 A6A3 A6C3 γ Γ γ
A6C4 A6A4 A6C4 δ Δ δ
A6C5 A6A5 A6C5 ε Ε ε
A6C6 A6A6 A6C6 ζ Ζ ζ
A6C7 A6A7 A6C7 η Η η
A6C8 A6A8 A6C8 θ Θ θ
A6C9 A6A9 A6C9 ι Ι ι
A6CA A6AA A6CA κ Κ κ
A6CB A6AB A6CB λ Λ λ
A6CC A6AC A6CC μ Μ μ
A6CD A6AD A6CD ν Ν ν
A6CE A6AE A6CE ξ Ξ ξ
A6CF A6AF A6CF ο Ο ο
A6D0 A6B0 A6D0 π Π π
A6D1 A6B1 A6D1 ρ Ρ ρ
A6D2 A6B2 A6D2 σ Σ σ
A6D3 A6B3 A6D3 τ Τ τ
A6D4 A6B4 A6D4 υ Υ υ
A6D5 A6B5 A6D5 φ Φ φ
A6D6 A6B6 A6D6 χ Χ χ
A6D7 A6B7 A6D7 ψ Ψ ψ
A6D8 A6B8 A6D8 ω Ω ω
A7A1 A7A1 A7D1 А А а
A7A2 A7A2 A7D2 Б Б б
A7A3 A7A3 A7D3 В В в
A7A4 A7A4 A7D4 Г Г г
A7A5 A7A5 A7D5 Д Д д
A7A6 A7A6 A7D6 Е Е е
A7A7 A7A7 A7D7 Ё Ё ё
A7A8 A7A8 A7D8 Ж Ж ж
A7A9 A7A9 A7D9 З З з
A7AA A7AA A7DA И И и
A7AB A7AB A7DB Й Й й
A7AC A7AC A7DC К К к
A7AD A7AD A7DD Л Л л
A7AE A7AE A7DE М М м
A7AF A7AF A7DF Н Н н
A7B0 A7B0 A7E0 О О о
A7B1 A7B1 A7E1 П П п
A7B2 A7B2 A7E2 Р Р р
A7B3 A7B3 A7E3 С С с
A7B4 A7B4 A7E4 Т Т т
A7B5 A7B5 A7E5 У У у
A7B6 A7B6 A7E6 Ф Ф ф
A7B7 A7B7 A7E7 Х Х х
A7B8 A7B8 A7E8 Ц Ц ц
A7B9 A7B9 A7E9 Ч Ч ч
A7BA A7BA A7EA Ш Ш ш
A7BB A7BB A7EB Щ Щ щ
A7BC A7BC A7EC Ъ Ъ ъ
A7BD A7BD A7ED Ы Ы ы
A7BE A7BE A7EE Ь Ь ь
A7BF A7BF A7EF Э Э э
A7C0 A7C0 A7F0 Ю Ю ю
A7C1 A7C1 A7F1 Я Я я
A7D1 A7A1 A7D1 а А а
A7D2 A7A2 A7D2 б Б б
A7D3 A7A3 A7D3 в В в
A7D4 A7A4 A7D4 г Г г
A7D5 A7A5 A7D5 д Д д
A7D6 A7A6 A7D6 е Е е
A7D7 A7A7 A7D7 ё Ё ё
A7D8 A7A8 A7D8 ж Ж ж
A7D9 A7A9 A7D9 з З з
A7DA A7AA A7DA и И и
A7DB A7AB A7DB й Й й
A7DC A7AC A7DC к К к
A7DD A7AD A7DD л Л л
A7DE A7AE A7DE м М м
A7DF A7AF A7DF н Н н
A7E0 A7B0 A7E0 о О о
A7E1 A7B1 A7E1 п П п
A7E2 A7B2 A7E2 р Р р
A7E3 A7B3 A7E3 с С с
A7E4 A7B4 A7E4 т Т т
A7E5 A7B5 A7E5 у У у
A7E6 A7B6 A7E6 ф Ф ф
A7E7 A7B7 A7E7 х Х х
A7E8 A7B8 A7E8 ц Ц ц
A7E9 A7B9 A7E9 ч Ч ч
A7EA A7BA A7EA ш Ш ш
A7EB A7BB A7EB щ Щ щ
A7EC A7BC A7EC ъ Ъ ъ
A7ED A7BD A7ED ы Ы ы
A7EE A7BE A7EE ь Ь ь
A7EF A7BF A7EF э Э э
A7F0 A7C0 A7F0 ю Ю ю
A7F1 A7C1 A7F1 я Я я
SELECT * FROM t1
WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
A2F1
A2F2 Ⅱ
A2F3 Ⅲ
A2F4 Ⅳ
A2F5
A2F6 Ⅵ
A2F7 Ⅶ
A2F8 Ⅷ
A2F9 Ⅸ
A2FA
A2FB Ⅺ
A2FC Ⅻ
SELECT * FROM t1
WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
A8A1 ā
A8A2 á
A8A3 ǎ
A8A4 à
A8A5 ē
A8A6 é
A8A7 ě
A8A8 è
A8A9 ī
A8AA í
A8AB ǐ
A8AC ì
A8AD ō
A8AE ó
A8AF ǒ
A8B0 ò
A8B1 ū
A8B2 ú
A8B3 ǔ
A8B4 ù
A8B5 ǖ
A8B6 ǘ
A8B7 ǚ
A8B8 ǜ
A8B9 ü
A8BA ê
DROP TABLE t1;
#
# End of 5.5 tests
#

View File

@ -255,3 +255,328 @@ SELECT a FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll;
SELECT b FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll;
DROP TABLES t1;
End of 5.0 tests
#
# Start of 5.5 tests
#
#
# Testing WL#4583 Case conversion in Asian character sets
#
SET NAMES utf8;
SET collation_connection=gbk_chinese_ci;
CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
DROP TABLE t1;
CREATE TABLE t1 AS
SELECT concat(head, tail) AS code, ' ' AS a
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
DROP TEMPORARY TABLE head, tail;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`code` varchar(8) DEFAULT NULL,
`a` varchar(1) CHARACTER SET gbk NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE t1 SET a=unhex(code) ORDER BY code;
Warnings:
Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
SELECT COUNT(*) FROM t1 WHERE a<>'';
COUNT(*)
23940
SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a));
code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
A2A1 A2F1 A2A1
A2A2 A2F2 A2A2 ⅱ Ⅱ ⅱ
A2A3 A2F3 A2A3 ⅲ Ⅲ ⅲ
A2A4 A2F4 A2A4 ⅳ Ⅳ ⅳ
A2A5 A2F5 A2A5
A2A6 A2F6 A2A6 ⅵ Ⅵ ⅵ
A2A7 A2F7 A2A7 ⅶ Ⅶ ⅶ
A2A8 A2F8 A2A8 ⅷ Ⅷ ⅷ
A2A9 A2F9 A2A9 ⅸ Ⅸ ⅸ
A2AA A2FA A2AA
A2F1 A2F1 A2A1
A2F2 A2F2 A2A2 Ⅱ Ⅱ ⅱ
A2F3 A2F3 A2A3 Ⅲ Ⅲ ⅲ
A2F4 A2F4 A2A4 Ⅳ Ⅳ ⅳ
A2F5 A2F5 A2A5
A2F6 A2F6 A2A6 Ⅵ Ⅵ ⅵ
A2F7 A2F7 A2A7 Ⅶ Ⅶ ⅶ
A2F8 A2F8 A2A8 Ⅷ Ⅷ ⅷ
A2F9 A2F9 A2A9 Ⅸ Ⅸ ⅸ
A2FA A2FA A2AA
A3C1 A3C1 A3E1
A3C2 A3C2 A3E2
A3C3 A3C3 A3E3
A3C4 A3C4 A3E4
A3C5 A3C5 A3E5
A3C6 A3C6 A3E6
A3C7 A3C7 A3E7
A3C8 A3C8 A3E8
A3C9 A3C9 A3E9
A3CA A3CA A3EA
A3CB A3CB A3EB
A3CC A3CC A3EC
A3CD A3CD A3ED
A3CE A3CE A3EE
A3CF A3CF A3EF
A3D0 A3D0 A3F0
A3D1 A3D1 A3F1
A3D2 A3D2 A3F2
A3D3 A3D3 A3F3
A3D4 A3D4 A3F4
A3D5 A3D5 A3F5
A3D6 A3D6 A3F6
A3D7 A3D7 A3F7
A3D8 A3D8 A3F8
A3D9 A3D9 A3F9
A3DA A3DA A3FA
A3E1 A3C1 A3E1
A3E2 A3C2 A3E2
A3E3 A3C3 A3E3
A3E4 A3C4 A3E4
A3E5 A3C5 A3E5
A3E6 A3C6 A3E6
A3E7 A3C7 A3E7
A3E8 A3C8 A3E8
A3E9 A3C9 A3E9
A3EA A3CA A3EA
A3EB A3CB A3EB
A3EC A3CC A3EC
A3ED A3CD A3ED
A3EE A3CE A3EE
A3EF A3CF A3EF
A3F0 A3D0 A3F0
A3F1 A3D1 A3F1
A3F2 A3D2 A3F2
A3F3 A3D3 A3F3
A3F4 A3D4 A3F4
A3F5 A3D5 A3F5
A3F6 A3D6 A3F6
A3F7 A3D7 A3F7
A3F8 A3D8 A3F8
A3F9 A3D9 A3F9
A3FA A3DA A3FA
A6A1 A6A1 A6C1 Α Α α
A6A2 A6A2 A6C2 Β Β β
A6A3 A6A3 A6C3 Γ Γ γ
A6A4 A6A4 A6C4 Δ Δ δ
A6A5 A6A5 A6C5 Ε Ε ε
A6A6 A6A6 A6C6 Ζ Ζ ζ
A6A7 A6A7 A6C7 Η Η η
A6A8 A6A8 A6C8 Θ Θ θ
A6A9 A6A9 A6C9 Ι Ι ι
A6AA A6AA A6CA Κ Κ κ
A6AB A6AB A6CB Λ Λ λ
A6AC A6AC A6CC Μ Μ μ
A6AD A6AD A6CD Ν Ν ν
A6AE A6AE A6CE Ξ Ξ ξ
A6AF A6AF A6CF Ο Ο ο
A6B0 A6B0 A6D0 Π Π π
A6B1 A6B1 A6D1 Ρ Ρ ρ
A6B2 A6B2 A6D2 Σ Σ σ
A6B3 A6B3 A6D3 Τ Τ τ
A6B4 A6B4 A6D4 Υ Υ υ
A6B5 A6B5 A6D5 Φ Φ φ
A6B6 A6B6 A6D6 Χ Χ χ
A6B7 A6B7 A6D7 Ψ Ψ ψ
A6B8 A6B8 A6D8 Ω Ω ω
A6C1 A6A1 A6C1 α Α α
A6C2 A6A2 A6C2 β Β β
A6C3 A6A3 A6C3 γ Γ γ
A6C4 A6A4 A6C4 δ Δ δ
A6C5 A6A5 A6C5 ε Ε ε
A6C6 A6A6 A6C6 ζ Ζ ζ
A6C7 A6A7 A6C7 η Η η
A6C8 A6A8 A6C8 θ Θ θ
A6C9 A6A9 A6C9 ι Ι ι
A6CA A6AA A6CA κ Κ κ
A6CB A6AB A6CB λ Λ λ
A6CC A6AC A6CC μ Μ μ
A6CD A6AD A6CD ν Ν ν
A6CE A6AE A6CE ξ Ξ ξ
A6CF A6AF A6CF ο Ο ο
A6D0 A6B0 A6D0 π Π π
A6D1 A6B1 A6D1 ρ Ρ ρ
A6D2 A6B2 A6D2 σ Σ σ
A6D3 A6B3 A6D3 τ Τ τ
A6D4 A6B4 A6D4 υ Υ υ
A6D5 A6B5 A6D5 φ Φ φ
A6D6 A6B6 A6D6 χ Χ χ
A6D7 A6B7 A6D7 ψ Ψ ψ
A6D8 A6B8 A6D8 ω Ω ω
A7A1 A7A1 A7D1 А А а
A7A2 A7A2 A7D2 Б Б б
A7A3 A7A3 A7D3 В В в
A7A4 A7A4 A7D4 Г Г г
A7A5 A7A5 A7D5 Д Д д
A7A6 A7A6 A7D6 Е Е е
A7A7 A7A7 A7D7 Ё Ё ё
A7A8 A7A8 A7D8 Ж Ж ж
A7A9 A7A9 A7D9 З З з
A7AA A7AA A7DA И И и
A7AB A7AB A7DB Й Й й
A7AC A7AC A7DC К К к
A7AD A7AD A7DD Л Л л
A7AE A7AE A7DE М М м
A7AF A7AF A7DF Н Н н
A7B0 A7B0 A7E0 О О о
A7B1 A7B1 A7E1 П П п
A7B2 A7B2 A7E2 Р Р р
A7B3 A7B3 A7E3 С С с
A7B4 A7B4 A7E4 Т Т т
A7B5 A7B5 A7E5 У У у
A7B6 A7B6 A7E6 Ф Ф ф
A7B7 A7B7 A7E7 Х Х х
A7B8 A7B8 A7E8 Ц Ц ц
A7B9 A7B9 A7E9 Ч Ч ч
A7BA A7BA A7EA Ш Ш ш
A7BB A7BB A7EB Щ Щ щ
A7BC A7BC A7EC Ъ Ъ ъ
A7BD A7BD A7ED Ы Ы ы
A7BE A7BE A7EE Ь Ь ь
A7BF A7BF A7EF Э Э э
A7C0 A7C0 A7F0 Ю Ю ю
A7C1 A7C1 A7F1 Я Я я
A7D1 A7A1 A7D1 а А а
A7D2 A7A2 A7D2 б Б б
A7D3 A7A3 A7D3 в В в
A7D4 A7A4 A7D4 г Г г
A7D5 A7A5 A7D5 д Д д
A7D6 A7A6 A7D6 е Е е
A7D7 A7A7 A7D7 ё Ё ё
A7D8 A7A8 A7D8 ж Ж ж
A7D9 A7A9 A7D9 з З з
A7DA A7AA A7DA и И и
A7DB A7AB A7DB й Й й
A7DC A7AC A7DC к К к
A7DD A7AD A7DD л Л л
A7DE A7AE A7DE м М м
A7DF A7AF A7DF н Н н
A7E0 A7B0 A7E0 о О о
A7E1 A7B1 A7E1 п П п
A7E2 A7B2 A7E2 р Р р
A7E3 A7B3 A7E3 с С с
A7E4 A7B4 A7E4 т Т т
A7E5 A7B5 A7E5 у У у
A7E6 A7B6 A7E6 ф Ф ф
A7E7 A7B7 A7E7 х Х х
A7E8 A7B8 A7E8 ц Ц ц
A7E9 A7B9 A7E9 ч Ч ч
A7EA A7BA A7EA ш Ш ш
A7EB A7BB A7EB щ Щ щ
A7EC A7BC A7EC ъ Ъ ъ
A7ED A7BD A7ED ы Ы ы
A7EE A7BE A7EE ь Ь ь
A7EF A7BF A7EF э Э э
A7F0 A7C0 A7F0 ю Ю ю
A7F1 A7C1 A7F1 я Я я
SELECT * FROM t1
WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
A2FB Ⅺ
A2FC Ⅻ
SELECT * FROM t1
WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
A8A1 ā
A8A2 á
A8A3 ǎ
A8A4 à
A8A5 ē
A8A6 é
A8A7 ě
A8A8 è
A8A9 ī
A8AA í
A8AB ǐ
A8AC ì
A8AD ō
A8AE ó
A8AF ǒ
A8B0 ò
A8B1 ū
A8B2 ú
A8B3 ǔ
A8B4 ù
A8B5 ǖ
A8B6 ǘ
A8B7 ǚ
A8B8 ǜ
A8B9 ü
A8BA ê
A8BD ń
A8BE ň
DROP TABLE t1;
#
# End of 5.5 tests
#

View File

@ -219,3 +219,290 @@ hex(a) hex(lower(a)) hex(upper(a))
8372835E 8372835E 8372835E
DROP TABLE t1;
# End of 5.1 tests
#
# Start of 5.5 tests
#
#
# Testing WL#4583 Case conversion in Asian character sets
#
SET NAMES utf8;
SET collation_connection=sjis_japanese_ci;
CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
DROP TABLE t1;
CREATE TABLE t1 AS
SELECT concat(head, tail) AS code, ' ' AS a
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF')
AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
INSERT t1 (code) SELECT head FROM head WHERE (head BETWEEN 'A1' AND 'DF');
DROP TEMPORARY TABLE head, tail;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`code` varchar(8) DEFAULT NULL,
`a` varchar(1) CHARACTER SET sjis NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE t1 SET a=unhex(code) ORDER BY code;
Warnings:
Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
SELECT COUNT(*) FROM t1;
COUNT(*)
14623
SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=1;
COUNT(*)
63
SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
COUNT(*)
11280
SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a)
FROM t1
WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a))
ORDER BY code;
code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
8260 8260 8281
8261 8261 8282
8262 8262 8283
8263 8263 8284
8264 8264 8285
8265 8265 8286
8266 8266 8287
8267 8267 8288
8268 8268 8289
8269 8269 828A
826A 826A 828B
826B 826B 828C
826C 826C 828D
826D 826D 828E
826E 826E 828F
826F 826F 8290
8270 8270 8291
8271 8271 8292
8272 8272 8293
8273 8273 8294
8274 8274 8295
8275 8275 8296
8276 8276 8297
8277 8277 8298
8278 8278 8299
8279 8279 829A
8281 8260 8281
8282 8261 8282
8283 8262 8283
8284 8263 8284
8285 8264 8285
8286 8265 8286
8287 8266 8287
8288 8267 8288
8289 8268 8289
828A 8269 828A
828B 826A 828B
828C 826B 828C
828D 826C 828D
828E 826D 828E
828F 826E 828F
8290 826F 8290
8291 8270 8291
8292 8271 8292
8293 8272 8293
8294 8273 8294
8295 8274 8295
8296 8275 8296
8297 8276 8297
8298 8277 8298
8299 8278 8299
829A 8279 829A
839F 839F 83BF Α Α α
83A0 83A0 83C0 Β Β β
83A1 83A1 83C1 Γ Γ γ
83A2 83A2 83C2 Δ Δ δ
83A3 83A3 83C3 Ε Ε ε
83A4 83A4 83C4 Ζ Ζ ζ
83A5 83A5 83C5 Η Η η
83A6 83A6 83C6 Θ Θ θ
83A7 83A7 83C7 Ι Ι ι
83A8 83A8 83C8 Κ Κ κ
83A9 83A9 83C9 Λ Λ λ
83AA 83AA 83CA Μ Μ μ
83AB 83AB 83CB Ν Ν ν
83AC 83AC 83CC Ξ Ξ ξ
83AD 83AD 83CD Ο Ο ο
83AE 83AE 83CE Π Π π
83AF 83AF 83CF Ρ Ρ ρ
83B0 83B0 83D0 Σ Σ σ
83B1 83B1 83D1 Τ Τ τ
83B2 83B2 83D2 Υ Υ υ
83B3 83B3 83D3 Φ Φ φ
83B4 83B4 83D4 Χ Χ χ
83B5 83B5 83D5 Ψ Ψ ψ
83B6 83B6 83D6 Ω Ω ω
83BF 839F 83BF α Α α
83C0 83A0 83C0 β Β β
83C1 83A1 83C1 γ Γ γ
83C2 83A2 83C2 δ Δ δ
83C3 83A3 83C3 ε Ε ε
83C4 83A4 83C4 ζ Ζ ζ
83C5 83A5 83C5 η Η η
83C6 83A6 83C6 θ Θ θ
83C7 83A7 83C7 ι Ι ι
83C8 83A8 83C8 κ Κ κ
83C9 83A9 83C9 λ Λ λ
83CA 83AA 83CA μ Μ μ
83CB 83AB 83CB ν Ν ν
83CC 83AC 83CC ξ Ξ ξ
83CD 83AD 83CD ο Ο ο
83CE 83AE 83CE π Π π
83CF 83AF 83CF ρ Ρ ρ
83D0 83B0 83D0 σ Σ σ
83D1 83B1 83D1 τ Τ τ
83D2 83B2 83D2 υ Υ υ
83D3 83B3 83D3 φ Φ φ
83D4 83B4 83D4 χ Χ χ
83D5 83B5 83D5 ψ Ψ ψ
83D6 83B6 83D6 ω Ω ω
8440 8440 8470 А А а
8441 8441 8471 Б Б б
8442 8442 8472 В В в
8443 8443 8473 Г Г г
8444 8444 8474 Д Д д
8445 8445 8475 Е Е е
8446 8446 8476 Ё Ё ё
8447 8447 8477 Ж Ж ж
8448 8448 8478 З З з
8449 8449 8479 И И и
844A 844A 847A Й Й й
844B 844B 847B К К к
844C 844C 847C Л Л л
844D 844D 847D М М м
844E 844E 847E Н Н н
844F 844F 8480 О О о
8450 8450 8481 П П п
8451 8451 8482 Р Р р
8452 8452 8483 С С с
8453 8453 8484 Т Т т
8454 8454 8485 У У у
8455 8455 8486 Ф Ф ф
8456 8456 8487 Х Х х
8457 8457 8488 Ц Ц ц
8458 8458 8489 Ч Ч ч
8459 8459 848A Ш Ш ш
845A 845A 848B Щ Щ щ
845B 845B 848C Ъ Ъ ъ
845C 845C 848D Ы Ы ы
845D 845D 848E Ь Ь ь
845E 845E 848F Э Э э
845F 845F 8490 Ю Ю ю
8460 8460 8491 Я Я я
8470 8440 8470 а А а
8471 8441 8471 б Б б
8472 8442 8472 в В в
8473 8443 8473 г Г г
8474 8444 8474 д Д д
8475 8445 8475 е Е е
8476 8446 8476 ё Ё ё
8477 8447 8477 ж Ж ж
8478 8448 8478 з З з
8479 8449 8479 и И и
847A 844A 847A й Й й
847B 844B 847B к К к
847C 844C 847C л Л л
847D 844D 847D м М м
847E 844E 847E н Н н
8480 844F 8480 о О о
8481 8450 8481 п П п
8482 8451 8482 р Р р
8483 8452 8483 с С с
8484 8453 8484 т Т т
8485 8454 8485 у У у
8486 8455 8486 ф Ф ф
8487 8456 8487 х Х х
8488 8457 8488 ц Ц ц
8489 8458 8489 ч Ч ч
848A 8459 848A ш Ш ш
848B 845A 848B щ Щ щ
848C 845B 848C ъ Ъ ъ
848D 845C 848D ы Ы ы
848E 845D 848E ь Ь ь
848F 845E 848F э Э э
8490 845F 8490 ю Ю ю
8491 8460 8491 я Я я
SELECT * FROM t1
WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
81F0 Å
SELECT * FROM t1
WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
DROP TABLE t1;
#
# End of 5.5 tests
#

View File

@ -2377,3 +2377,535 @@ DROP TABLE t2;
set names default;
set character_set_database=default;
set character_set_server=default;
#
# Start of 5.5 tests
#
#
# Testing WL#4583 Case conversion in Asian character sets
#
SET NAMES utf8;
SET collation_connection=ujis_japanese_ci;
CREATE TABLE t1 (b VARCHAR(2));
INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7');
INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F');
CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2;
CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2;
DROP TABLE t1;
CREATE TABLE t1 AS SELECT 'XXXXXX' AS code, ' ' AS a LIMIT 0;
INSERT INTO t1 (code) SELECT concat('8E', head) FROM head
WHERE (head BETWEEN 'A1' AND 'DF') ORDER BY head;
INSERT INTO t1 (code) SELECT concat(head, tail)
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN '8E' AND '8F')
AND (tail BETWEEN '20' AND 'FF')
ORDER BY head, tail;
INSERT INTO t1 (code) SELECT concat('8F', head, tail)
FROM head, tail
WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '80' AND 'FF')
ORDER BY head, tail;
DROP TEMPORARY TABLE head, tail;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`code` varchar(6) CHARACTER SET ujis NOT NULL DEFAULT '',
`a` varchar(1) CHARACTER SET ujis NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
UPDATE t1 SET a=unhex(code) ORDER BY code;
Warnings:
Warning 1366 Incorrect string value: '\x80 ' for column 'a' at row 1
Warning 1366 Incorrect string value: '\x80!' for column 'a' at row 2
Warning 1366 Incorrect string value: '\x80"' for column 'a' at row 3
Warning 1366 Incorrect string value: '\x80#' for column 'a' at row 4
Warning 1366 Incorrect string value: '\x80$' for column 'a' at row 5
Warning 1366 Incorrect string value: '\x80%' for column 'a' at row 6
Warning 1366 Incorrect string value: '\x80&' for column 'a' at row 7
Warning 1366 Incorrect string value: '\x80'' for column 'a' at row 8
Warning 1366 Incorrect string value: '\x80(' for column 'a' at row 9
Warning 1366 Incorrect string value: '\x80)' for column 'a' at row 10
Warning 1366 Incorrect string value: '\x80*' for column 'a' at row 11
Warning 1366 Incorrect string value: '\x80+' for column 'a' at row 12
Warning 1366 Incorrect string value: '\x80,' for column 'a' at row 13
Warning 1366 Incorrect string value: '\x80-' for column 'a' at row 14
Warning 1366 Incorrect string value: '\x80.' for column 'a' at row 15
Warning 1366 Incorrect string value: '\x80/' for column 'a' at row 16
Warning 1366 Incorrect string value: '\x800' for column 'a' at row 17
Warning 1366 Incorrect string value: '\x801' for column 'a' at row 18
Warning 1366 Incorrect string value: '\x802' for column 'a' at row 19
Warning 1366 Incorrect string value: '\x803' for column 'a' at row 20
Warning 1366 Incorrect string value: '\x804' for column 'a' at row 21
Warning 1366 Incorrect string value: '\x805' for column 'a' at row 22
Warning 1366 Incorrect string value: '\x806' for column 'a' at row 23
Warning 1366 Incorrect string value: '\x807' for column 'a' at row 24
Warning 1366 Incorrect string value: '\x808' for column 'a' at row 25
Warning 1366 Incorrect string value: '\x809' for column 'a' at row 26
Warning 1366 Incorrect string value: '\x80:' for column 'a' at row 27
Warning 1366 Incorrect string value: '\x80;' for column 'a' at row 28
Warning 1366 Incorrect string value: '\x80<' for column 'a' at row 29
Warning 1366 Incorrect string value: '\x80=' for column 'a' at row 30
Warning 1366 Incorrect string value: '\x80>' for column 'a' at row 31
Warning 1366 Incorrect string value: '\x80?' for column 'a' at row 32
Warning 1366 Incorrect string value: '\x80@' for column 'a' at row 33
Warning 1366 Incorrect string value: '\x80A' for column 'a' at row 34
Warning 1366 Incorrect string value: '\x80B' for column 'a' at row 35
Warning 1366 Incorrect string value: '\x80C' for column 'a' at row 36
Warning 1366 Incorrect string value: '\x80D' for column 'a' at row 37
Warning 1366 Incorrect string value: '\x80E' for column 'a' at row 38
Warning 1366 Incorrect string value: '\x80F' for column 'a' at row 39
Warning 1366 Incorrect string value: '\x80G' for column 'a' at row 40
Warning 1366 Incorrect string value: '\x80H' for column 'a' at row 41
Warning 1366 Incorrect string value: '\x80I' for column 'a' at row 42
Warning 1366 Incorrect string value: '\x80J' for column 'a' at row 43
Warning 1366 Incorrect string value: '\x80K' for column 'a' at row 44
Warning 1366 Incorrect string value: '\x80L' for column 'a' at row 45
Warning 1366 Incorrect string value: '\x80M' for column 'a' at row 46
Warning 1366 Incorrect string value: '\x80N' for column 'a' at row 47
Warning 1366 Incorrect string value: '\x80O' for column 'a' at row 48
Warning 1366 Incorrect string value: '\x80P' for column 'a' at row 49
Warning 1366 Incorrect string value: '\x80Q' for column 'a' at row 50
Warning 1366 Incorrect string value: '\x80R' for column 'a' at row 51
Warning 1366 Incorrect string value: '\x80S' for column 'a' at row 52
Warning 1366 Incorrect string value: '\x80T' for column 'a' at row 53
Warning 1366 Incorrect string value: '\x80U' for column 'a' at row 54
Warning 1366 Incorrect string value: '\x80V' for column 'a' at row 55
Warning 1366 Incorrect string value: '\x80W' for column 'a' at row 56
Warning 1366 Incorrect string value: '\x80X' for column 'a' at row 57
Warning 1366 Incorrect string value: '\x80Y' for column 'a' at row 58
Warning 1366 Incorrect string value: '\x80Z' for column 'a' at row 59
Warning 1366 Incorrect string value: '\x80[' for column 'a' at row 60
Warning 1366 Incorrect string value: '\x80\' for column 'a' at row 61
Warning 1366 Incorrect string value: '\x80]' for column 'a' at row 62
Warning 1366 Incorrect string value: '\x80^' for column 'a' at row 63
Warning 1366 Incorrect string value: '\x80_' for column 'a' at row 64
SELECT COUNT(*) FROM t1;
COUNT(*)
44671
SELECT COUNT(*) FROM t1 WHERE a<>'';
COUNT(*)
17735
SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2;
COUNT(*)
8899
SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=3;
COUNT(*)
8836
SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)) ORDER BY code;
code hex(upper(a)) hex(lower(a)) a upper(a) lower(a)
8FA6E1 8FA6E1 8FA6F1 Ά Ά ά
8FA6E2 8FA6E2 8FA6F2 Έ Έ έ
8FA6E3 8FA6E3 8FA6F3 Ή Ή ή
8FA6E4 8FA6E4 8FA6F4 Ί Ί ί
8FA6E5 8FA6E5 8FA6F5 Ϊ Ϊ ϊ
8FA6E7 8FA6E7 8FA6F7 Ό Ό ό
8FA6E9 8FA6E9 8FA6F9 Ύ Ύ ύ
8FA6EA 8FA6EA 8FA6FA Ϋ Ϋ ϋ
8FA6EC 8FA6EC 8FA6FC Ώ Ώ ώ
8FA6F1 8FA6E1 8FA6F1 ά Ά ά
8FA6F2 8FA6E2 8FA6F2 έ Έ έ
8FA6F3 8FA6E3 8FA6F3 ή Ή ή
8FA6F4 8FA6E4 8FA6F4 ί Ί ί
8FA6F5 8FA6E5 8FA6F5 ϊ Ϊ ϊ
8FA6F7 8FA6E7 8FA6F7 ό Ό ό
8FA6F8 A6B2 8FA6F8 ς Σ ς
8FA6F9 8FA6E9 8FA6F9 ύ Ύ ύ
8FA6FA 8FA6EA 8FA6FA ϋ Ϋ ϋ
8FA6FC 8FA6EC 8FA6FC ώ Ώ ώ
8FA7C2 8FA7C2 8FA7F2 Ђ Ђ ђ
8FA7C3 8FA7C3 8FA7F3 Ѓ Ѓ ѓ
8FA7C4 8FA7C4 8FA7F4 Є Є є
8FA7C5 8FA7C5 8FA7F5 Ѕ Ѕ ѕ
8FA7C6 8FA7C6 8FA7F6 І І і
8FA7C7 8FA7C7 8FA7F7 Ї Ї ї
8FA7C8 8FA7C8 8FA7F8 Ј Ј ј
8FA7C9 8FA7C9 8FA7F9 Љ Љ љ
8FA7CA 8FA7CA 8FA7FA Њ Њ њ
8FA7CB 8FA7CB 8FA7FB Ћ Ћ ћ
8FA7CC 8FA7CC 8FA7FC Ќ Ќ ќ
8FA7CD 8FA7CD 8FA7FD Ў Ў ў
8FA7CE 8FA7CE 8FA7FE Џ Џ џ
8FA7F2 8FA7C2 8FA7F2 ђ Ђ ђ
8FA7F3 8FA7C3 8FA7F3 ѓ Ѓ ѓ
8FA7F4 8FA7C4 8FA7F4 є Є є
8FA7F5 8FA7C5 8FA7F5 ѕ Ѕ ѕ
8FA7F6 8FA7C6 8FA7F6 і І і
8FA7F7 8FA7C7 8FA7F7 ї Ї ї
8FA7F8 8FA7C8 8FA7F8 ј Ј ј
8FA7F9 8FA7C9 8FA7F9 љ Љ љ
8FA7FA 8FA7CA 8FA7FA њ Њ њ
8FA7FB 8FA7CB 8FA7FB ћ Ћ ћ
8FA7FC 8FA7CC 8FA7FC ќ Ќ ќ
8FA7FD 8FA7CD 8FA7FD ў Ў ў
8FA7FE 8FA7CE 8FA7FE џ Џ џ
8FA9A1 8FA9A1 8FA9C1 Æ Æ æ
8FA9A2 8FA9A2 8FA9C2 Đ Đ đ
8FA9A4 8FA9A4 8FA9C4 Ħ Ħ ħ
8FA9A6 8FA9A6 8FA9C6 IJ IJ ij
8FA9A8 8FA9A8 8FA9C8 Ł Ł ł
8FA9A9 8FA9A9 8FA9C9 Ŀ Ŀ ŀ
8FA9AB 8FA9AB 8FA9CB Ŋ Ŋ ŋ
8FA9AC 8FA9AC 8FA9CC Ø Ø ø
8FA9AD 8FA9AD 8FA9CD Œ Œ œ
8FA9AF 8FA9AF 8FA9CF Ŧ Ŧ ŧ
8FA9B0 8FA9B0 8FA9D0 Þ Þ þ
8FA9C1 8FA9A1 8FA9C1 æ Æ æ
8FA9C2 8FA9A2 8FA9C2 đ Đ đ
8FA9C4 8FA9A4 8FA9C4 ħ Ħ ħ
8FA9C5 49 8FA9C5 ı I ı
8FA9C6 8FA9A6 8FA9C6 ij IJ ij
8FA9C8 8FA9A8 8FA9C8 ł Ł ł
8FA9C9 8FA9A9 8FA9C9 ŀ Ŀ ŀ
8FA9CB 8FA9AB 8FA9CB ŋ Ŋ ŋ
8FA9CC 8FA9AC 8FA9CC ø Ø ø
8FA9CD 8FA9AD 8FA9CD œ Œ œ
8FA9CF 8FA9AF 8FA9CF ŧ Ŧ ŧ
8FA9D0 8FA9B0 8FA9D0 þ Þ þ
8FAAA1 8FAAA1 8FABA1 Á Á á
8FAAA2 8FAAA2 8FABA2 À À à
8FAAA3 8FAAA3 8FABA3 Ä Ä ä
8FAAA4 8FAAA4 8FABA4 Â Â â
8FAAA5 8FAAA5 8FABA5 Ă Ă ă
8FAAA6 8FAAA6 8FABA6 Ǎ Ǎ ǎ
8FAAA7 8FAAA7 8FABA7 Ā Ā ā
8FAAA8 8FAAA8 8FABA8 Ą Ą ą
8FAAA9 8FAAA9 8FABA9 Å Å å
8FAAAA 8FAAAA 8FABAA Ã Ã ã
8FAAAB 8FAAAB 8FABAB Ć Ć ć
8FAAAC 8FAAAC 8FABAC Ĉ Ĉ ĉ
8FAAAD 8FAAAD 8FABAD Č Č č
8FAAAE 8FAAAE 8FABAE Ç Ç ç
8FAAAF 8FAAAF 8FABAF Ċ Ċ ċ
8FAAB0 8FAAB0 8FABB0 Ď Ď ď
8FAAB1 8FAAB1 8FABB1 É É é
8FAAB2 8FAAB2 8FABB2 È È è
8FAAB3 8FAAB3 8FABB3 Ë Ë ë
8FAAB4 8FAAB4 8FABB4 Ê Ê ê
8FAAB5 8FAAB5 8FABB5 Ě Ě ě
8FAAB6 8FAAB6 8FABB6 Ė Ė ė
8FAAB7 8FAAB7 8FABB7 Ē Ē ē
8FAAB8 8FAAB8 8FABB8 Ę Ę ę
8FAABA 8FAABA 8FABBA Ĝ Ĝ ĝ
8FAABB 8FAABB 8FABBB Ğ Ğ ğ
8FAABD 8FAABD 8FABBD Ġ Ġ ġ
8FAABE 8FAABE 8FABBE Ĥ Ĥ ĥ
8FAABF 8FAABF 8FABBF Í Í í
8FAAC0 8FAAC0 8FABC0 Ì Ì ì
8FAAC1 8FAAC1 8FABC1 Ï Ï ï
8FAAC2 8FAAC2 8FABC2 Î Î î
8FAAC3 8FAAC3 8FABC3 Ǐ Ǐ ǐ
8FAAC4 8FAAC4 69 İ İ i
8FAAC5 8FAAC5 8FABC5 Ī Ī ī
8FAAC6 8FAAC6 8FABC6 Į Į į
8FAAC7 8FAAC7 8FABC7 Ĩ Ĩ ĩ
8FAAC8 8FAAC8 8FABC8 Ĵ Ĵ ĵ
8FAAC9 8FAAC9 8FABC9 Ķ Ķ ķ
8FAACA 8FAACA 8FABCA Ĺ Ĺ ĺ
8FAACB 8FAACB 8FABCB Ľ Ľ ľ
8FAACC 8FAACC 8FABCC Ļ Ļ ļ
8FAACD 8FAACD 8FABCD Ń Ń ń
8FAACE 8FAACE 8FABCE Ň Ň ň
8FAACF 8FAACF 8FABCF Ņ Ņ ņ
8FAAD0 8FAAD0 8FABD0 Ñ Ñ ñ
8FAAD1 8FAAD1 8FABD1 Ó Ó ó
8FAAD2 8FAAD2 8FABD2 Ò Ò ò
8FAAD3 8FAAD3 8FABD3 Ö Ö ö
8FAAD4 8FAAD4 8FABD4 Ô Ô ô
8FAAD5 8FAAD5 8FABD5 Ǒ Ǒ ǒ
8FAAD6 8FAAD6 8FABD6 Ő Ő ő
8FAAD7 8FAAD7 8FABD7 Ō Ō ō
8FAAD8 8FAAD8 8FABD8 Õ Õ õ
8FAAD9 8FAAD9 8FABD9 Ŕ Ŕ ŕ
8FAADA 8FAADA 8FABDA Ř Ř ř
8FAADB 8FAADB 8FABDB Ŗ Ŗ ŗ
8FAADC 8FAADC 8FABDC Ś Ś ś
8FAADD 8FAADD 8FABDD Ŝ Ŝ ŝ
8FAADE 8FAADE 8FABDE Š Š š
8FAADF 8FAADF 8FABDF Ş Ş ş
8FAAE0 8FAAE0 8FABE0 Ť Ť ť
8FAAE1 8FAAE1 8FABE1 Ţ Ţ ţ
8FAAE2 8FAAE2 8FABE2 Ú Ú ú
8FAAE3 8FAAE3 8FABE3 Ù Ù ù
8FAAE4 8FAAE4 8FABE4 Ü Ü ü
8FAAE5 8FAAE5 8FABE5 Û Û û
8FAAE6 8FAAE6 8FABE6 Ŭ Ŭ ŭ
8FAAE7 8FAAE7 8FABE7 Ǔ Ǔ ǔ
8FAAE8 8FAAE8 8FABE8 Ű Ű ű
8FAAE9 8FAAE9 8FABE9 Ū Ū ū
8FAAEA 8FAAEA 8FABEA Ų Ų ų
8FAAEB 8FAAEB 8FABEB Ů Ů ů
8FAAEC 8FAAEC 8FABEC Ũ Ũ ũ
8FAAED 8FAAED 8FABED Ǘ Ǘ ǘ
8FAAEE 8FAAEE 8FABEE Ǜ Ǜ ǜ
8FAAEF 8FAAEF 8FABEF Ǚ Ǚ ǚ
8FAAF0 8FAAF0 8FABF0 Ǖ Ǖ ǖ
8FAAF1 8FAAF1 8FABF1 Ŵ Ŵ ŵ
8FAAF2 8FAAF2 8FABF2 Ý Ý ý
8FAAF3 8FAAF3 8FABF3 Ÿ Ÿ ÿ
8FAAF4 8FAAF4 8FABF4 Ŷ Ŷ ŷ
8FAAF5 8FAAF5 8FABF5 Ź Ź ź
8FAAF6 8FAAF6 8FABF6 Ž Ž ž
8FAAF7 8FAAF7 8FABF7 Ż Ż ż
8FABA1 8FAAA1 8FABA1 á Á á
8FABA2 8FAAA2 8FABA2 à À à
8FABA3 8FAAA3 8FABA3 ä Ä ä
8FABA4 8FAAA4 8FABA4 â Â â
8FABA5 8FAAA5 8FABA5 ă Ă ă
8FABA6 8FAAA6 8FABA6 ǎ Ǎ ǎ
8FABA7 8FAAA7 8FABA7 ā Ā ā
8FABA8 8FAAA8 8FABA8 ą Ą ą
8FABA9 8FAAA9 8FABA9 å Å å
8FABAA 8FAAAA 8FABAA ã Ã ã
8FABAB 8FAAAB 8FABAB ć Ć ć
8FABAC 8FAAAC 8FABAC ĉ Ĉ ĉ
8FABAD 8FAAAD 8FABAD č Č č
8FABAE 8FAAAE 8FABAE ç Ç ç
8FABAF 8FAAAF 8FABAF ċ Ċ ċ
8FABB0 8FAAB0 8FABB0 ď Ď ď
8FABB1 8FAAB1 8FABB1 é É é
8FABB2 8FAAB2 8FABB2 è È è
8FABB3 8FAAB3 8FABB3 ë Ë ë
8FABB4 8FAAB4 8FABB4 ê Ê ê
8FABB5 8FAAB5 8FABB5 ě Ě ě
8FABB6 8FAAB6 8FABB6 ė Ė ė
8FABB7 8FAAB7 8FABB7 ē Ē ē
8FABB8 8FAAB8 8FABB8 ę Ę ę
8FABBA 8FAABA 8FABBA ĝ Ĝ ĝ
8FABBB 8FAABB 8FABBB ğ Ğ ğ
8FABBD 8FAABD 8FABBD ġ Ġ ġ
8FABBE 8FAABE 8FABBE ĥ Ĥ ĥ
8FABBF 8FAABF 8FABBF í Í í
8FABC0 8FAAC0 8FABC0 ì Ì ì
8FABC1 8FAAC1 8FABC1 ï Ï ï
8FABC2 8FAAC2 8FABC2 î Î î
8FABC3 8FAAC3 8FABC3 ǐ Ǐ ǐ
8FABC5 8FAAC5 8FABC5 ī Ī ī
8FABC6 8FAAC6 8FABC6 į Į į
8FABC7 8FAAC7 8FABC7 ĩ Ĩ ĩ
8FABC8 8FAAC8 8FABC8 ĵ Ĵ ĵ
8FABC9 8FAAC9 8FABC9 ķ Ķ ķ
8FABCA 8FAACA 8FABCA ĺ Ĺ ĺ
8FABCB 8FAACB 8FABCB ľ Ľ ľ
8FABCC 8FAACC 8FABCC ļ Ļ ļ
8FABCD 8FAACD 8FABCD ń Ń ń
8FABCE 8FAACE 8FABCE ň Ň ň
8FABCF 8FAACF 8FABCF ņ Ņ ņ
8FABD0 8FAAD0 8FABD0 ñ Ñ ñ
8FABD1 8FAAD1 8FABD1 ó Ó ó
8FABD2 8FAAD2 8FABD2 ò Ò ò
8FABD3 8FAAD3 8FABD3 ö Ö ö
8FABD4 8FAAD4 8FABD4 ô Ô ô
8FABD5 8FAAD5 8FABD5 ǒ Ǒ ǒ
8FABD6 8FAAD6 8FABD6 ő Ő ő
8FABD7 8FAAD7 8FABD7 ō Ō ō
8FABD8 8FAAD8 8FABD8 õ Õ õ
8FABD9 8FAAD9 8FABD9 ŕ Ŕ ŕ
8FABDA 8FAADA 8FABDA ř Ř ř
8FABDB 8FAADB 8FABDB ŗ Ŗ ŗ
8FABDC 8FAADC 8FABDC ś Ś ś
8FABDD 8FAADD 8FABDD ŝ Ŝ ŝ
8FABDE 8FAADE 8FABDE š Š š
8FABDF 8FAADF 8FABDF ş Ş ş
8FABE0 8FAAE0 8FABE0 ť Ť ť
8FABE1 8FAAE1 8FABE1 ţ Ţ ţ
8FABE2 8FAAE2 8FABE2 ú Ú ú
8FABE3 8FAAE3 8FABE3 ù Ù ù
8FABE4 8FAAE4 8FABE4 ü Ü ü
8FABE5 8FAAE5 8FABE5 û Û û
8FABE6 8FAAE6 8FABE6 ŭ Ŭ ŭ
8FABE7 8FAAE7 8FABE7 ǔ Ǔ ǔ
8FABE8 8FAAE8 8FABE8 ű Ű ű
8FABE9 8FAAE9 8FABE9 ū Ū ū
8FABEA 8FAAEA 8FABEA ų Ų ų
8FABEB 8FAAEB 8FABEB ů Ů ů
8FABEC 8FAAEC 8FABEC ũ Ũ ũ
8FABED 8FAAED 8FABED ǘ Ǘ ǘ
8FABEE 8FAAEE 8FABEE ǜ Ǜ ǜ
8FABEF 8FAAEF 8FABEF ǚ Ǚ ǚ
8FABF0 8FAAF0 8FABF0 ǖ Ǖ ǖ
8FABF1 8FAAF1 8FABF1 ŵ Ŵ ŵ
8FABF2 8FAAF2 8FABF2 ý Ý ý
8FABF3 8FAAF3 8FABF3 ÿ Ÿ ÿ
8FABF4 8FAAF4 8FABF4 ŷ Ŷ ŷ
8FABF5 8FAAF5 8FABF5 ź Ź ź
8FABF6 8FAAF6 8FABF6 ž Ž ž
8FABF7 8FAAF7 8FABF7 ż Ż ż
A2F2 A2F2 8FABA9 Å Å å
A3C1 A3C1 A3E1
A3C2 A3C2 A3E2
A3C3 A3C3 A3E3
A3C4 A3C4 A3E4
A3C5 A3C5 A3E5
A3C6 A3C6 A3E6
A3C7 A3C7 A3E7
A3C8 A3C8 A3E8
A3C9 A3C9 A3E9
A3CA A3CA A3EA
A3CB A3CB A3EB
A3CC A3CC A3EC
A3CD A3CD A3ED
A3CE A3CE A3EE
A3CF A3CF A3EF
A3D0 A3D0 A3F0
A3D1 A3D1 A3F1
A3D2 A3D2 A3F2
A3D3 A3D3 A3F3
A3D4 A3D4 A3F4
A3D5 A3D5 A3F5
A3D6 A3D6 A3F6
A3D7 A3D7 A3F7
A3D8 A3D8 A3F8
A3D9 A3D9 A3F9
A3DA A3DA A3FA
A3E1 A3C1 A3E1
A3E2 A3C2 A3E2
A3E3 A3C3 A3E3
A3E4 A3C4 A3E4
A3E5 A3C5 A3E5
A3E6 A3C6 A3E6
A3E7 A3C7 A3E7
A3E8 A3C8 A3E8
A3E9 A3C9 A3E9
A3EA A3CA A3EA
A3EB A3CB A3EB
A3EC A3CC A3EC
A3ED A3CD A3ED
A3EE A3CE A3EE
A3EF A3CF A3EF
A3F0 A3D0 A3F0
A3F1 A3D1 A3F1
A3F2 A3D2 A3F2
A3F3 A3D3 A3F3
A3F4 A3D4 A3F4
A3F5 A3D5 A3F5
A3F6 A3D6 A3F6
A3F7 A3D7 A3F7
A3F8 A3D8 A3F8
A3F9 A3D9 A3F9
A3FA A3DA A3FA
A6A1 A6A1 A6C1 Α Α α
A6A2 A6A2 A6C2 Β Β β
A6A3 A6A3 A6C3 Γ Γ γ
A6A4 A6A4 A6C4 Δ Δ δ
A6A5 A6A5 A6C5 Ε Ε ε
A6A6 A6A6 A6C6 Ζ Ζ ζ
A6A7 A6A7 A6C7 Η Η η
A6A8 A6A8 A6C8 Θ Θ θ
A6A9 A6A9 A6C9 Ι Ι ι
A6AA A6AA A6CA Κ Κ κ
A6AB A6AB A6CB Λ Λ λ
A6AC A6AC A6CC Μ Μ μ
A6AD A6AD A6CD Ν Ν ν
A6AE A6AE A6CE Ξ Ξ ξ
A6AF A6AF A6CF Ο Ο ο
A6B0 A6B0 A6D0 Π Π π
A6B1 A6B1 A6D1 Ρ Ρ ρ
A6B2 A6B2 A6D2 Σ Σ σ
A6B3 A6B3 A6D3 Τ Τ τ
A6B4 A6B4 A6D4 Υ Υ υ
A6B5 A6B5 A6D5 Φ Φ φ
A6B6 A6B6 A6D6 Χ Χ χ
A6B7 A6B7 A6D7 Ψ Ψ ψ
A6B8 A6B8 A6D8 Ω Ω ω
A6C1 A6A1 A6C1 α Α α
A6C2 A6A2 A6C2 β Β β
A6C3 A6A3 A6C3 γ Γ γ
A6C4 A6A4 A6C4 δ Δ δ
A6C5 A6A5 A6C5 ε Ε ε
A6C6 A6A6 A6C6 ζ Ζ ζ
A6C7 A6A7 A6C7 η Η η
A6C8 A6A8 A6C8 θ Θ θ
A6C9 A6A9 A6C9 ι Ι ι
A6CA A6AA A6CA κ Κ κ
A6CB A6AB A6CB λ Λ λ
A6CC A6AC A6CC μ Μ μ
A6CD A6AD A6CD ν Ν ν
A6CE A6AE A6CE ξ Ξ ξ
A6CF A6AF A6CF ο Ο ο
A6D0 A6B0 A6D0 π Π π
A6D1 A6B1 A6D1 ρ Ρ ρ
A6D2 A6B2 A6D2 σ Σ σ
A6D3 A6B3 A6D3 τ Τ τ
A6D4 A6B4 A6D4 υ Υ υ
A6D5 A6B5 A6D5 φ Φ φ
A6D6 A6B6 A6D6 χ Χ χ
A6D7 A6B7 A6D7 ψ Ψ ψ
A6D8 A6B8 A6D8 ω Ω ω
A7A1 A7A1 A7D1 А А а
A7A2 A7A2 A7D2 Б Б б
A7A3 A7A3 A7D3 В В в
A7A4 A7A4 A7D4 Г Г г
A7A5 A7A5 A7D5 Д Д д
A7A6 A7A6 A7D6 Е Е е
A7A7 A7A7 A7D7 Ё Ё ё
A7A8 A7A8 A7D8 Ж Ж ж
A7A9 A7A9 A7D9 З З з
A7AA A7AA A7DA И И и
A7AB A7AB A7DB Й Й й
A7AC A7AC A7DC К К к
A7AD A7AD A7DD Л Л л
A7AE A7AE A7DE М М м
A7AF A7AF A7DF Н Н н
A7B0 A7B0 A7E0 О О о
A7B1 A7B1 A7E1 П П п
A7B2 A7B2 A7E2 Р Р р
A7B3 A7B3 A7E3 С С с
A7B4 A7B4 A7E4 Т Т т
A7B5 A7B5 A7E5 У У у
A7B6 A7B6 A7E6 Ф Ф ф
A7B7 A7B7 A7E7 Х Х х
A7B8 A7B8 A7E8 Ц Ц ц
A7B9 A7B9 A7E9 Ч Ч ч
A7BA A7BA A7EA Ш Ш ш
A7BB A7BB A7EB Щ Щ щ
A7BC A7BC A7EC Ъ Ъ ъ
A7BD A7BD A7ED Ы Ы ы
A7BE A7BE A7EE Ь Ь ь
A7BF A7BF A7EF Э Э э
A7C0 A7C0 A7F0 Ю Ю ю
A7C1 A7C1 A7F1 Я Я я
A7D1 A7A1 A7D1 а А а
A7D2 A7A2 A7D2 б Б б
A7D3 A7A3 A7D3 в В в
A7D4 A7A4 A7D4 г Г г
A7D5 A7A5 A7D5 д Д д
A7D6 A7A6 A7D6 е Е е
A7D7 A7A7 A7D7 ё Ё ё
A7D8 A7A8 A7D8 ж Ж ж
A7D9 A7A9 A7D9 з З з
A7DA A7AA A7DA и И и
A7DB A7AB A7DB й Й й
A7DC A7AC A7DC к К к
A7DD A7AD A7DD л Л л
A7DE A7AE A7DE м М м
A7DF A7AF A7DF н Н н
A7E0 A7B0 A7E0 о О о
A7E1 A7B1 A7E1 п П п
A7E2 A7B2 A7E2 р Р р
A7E3 A7B3 A7E3 с С с
A7E4 A7B4 A7E4 т Т т
A7E5 A7B5 A7E5 у У у
A7E6 A7B6 A7E6 ф Ф ф
A7E7 A7B7 A7E7 х Х х
A7E8 A7B8 A7E8 ц Ц ц
A7E9 A7B9 A7E9 ч Ч ч
A7EA A7BA A7EA ш Ш ш
A7EB A7BB A7EB щ Щ щ
A7EC A7BC A7EC ъ Ъ ъ
A7ED A7BD A7ED ы Ы ы
A7EE A7BE A7EE ь Ь ь
A7EF A7BF A7EF э Э э
A7F0 A7C0 A7F0 ю Ю ю
A7F1 A7C1 A7F1 я Я я
SELECT * FROM t1
WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
8FAABC Ģ
SELECT * FROM t1
WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <>
HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code;
code a
8FA9C3 ð
8FABB9 ǵ
DROP TABLE t1;
#
# End of 5.5 tests
#

View File

@ -50,6 +50,7 @@ information_schema
mtr
mysql
mysqltest
performance_schema
test
flush tables with read lock;
drop database mysqltest;
@ -61,6 +62,7 @@ Database
information_schema
mtr
mysql
performance_schema
test
drop database mysqltest;
ERROR HY000: Can't drop database 'mysqltest'; database doesn't exist

View File

@ -1,2 +0,0 @@
Variable_name Value
have_dynamic_loading YES

View File

@ -1,2 +0,0 @@
have_example_plugin
1

View File

@ -1,2 +0,0 @@
have_simple_parser
1

View File

@ -1,2 +0,0 @@
have_udf_example_lib
1

View File

@ -11,12 +11,14 @@ select * from information_schema.SCHEMATA where schema_name > 'm';
CATALOG_NAME SCHEMA_NAME DEFAULT_CHARACTER_SET_NAME DEFAULT_COLLATION_NAME SQL_PATH
def mtr latin1 latin1_swedish_ci NULL
def mysql latin1 latin1_swedish_ci NULL
def performance_schema utf8 utf8_general_ci NULL
def test latin1 latin1_swedish_ci NULL
select schema_name from information_schema.schemata;
schema_name
information_schema
mtr
mysql
performance_schema
test
show databases like 't%';
Database (t%)
@ -26,6 +28,7 @@ Database
information_schema
mtr
mysql
performance_schema
test
show databases where `database` = 't%';
Database
@ -364,6 +367,7 @@ c
information_schema
mtr
mysql
performance_schema
test
explain select * from v0;
id select_type table type possible_keys key key_len ref rows Extra

View File

@ -604,7 +604,7 @@ a b
4 4
show master status /* there must be the UPDATE query event */;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 207
master-bin.000001 344
delete from t1;
delete from t2;
insert into t1 values (1,2),(3,4),(4,4);
@ -614,7 +614,7 @@ UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a;
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
show master status /* there must be the UPDATE query event */;
File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 222
master-bin.000001 359
drop table t1, t2;
set @@session.binlog_format= @sav_binlog_format;
drop table if exists t1, t2, t3;

View File

@ -37,24 +37,60 @@ SET TIMESTAMP=1000000000/*!*/;
create table t2 (id int auto_increment not null primary key)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("abirvalg")
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t2 values ()
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@ -64,7 +100,6 @@ ROLLBACK /* added by mysqlbinlog */;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
@ -74,8 +109,24 @@ SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("Alas")
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@ -86,17 +137,6 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
SET INSERT_ID=1/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
--- --position --
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
@ -106,8 +146,69 @@ SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
--- --position --
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("Alas")
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@ -137,24 +238,60 @@ SET TIMESTAMP=1000000000/*!*/;
create table t2 (id int auto_increment not null primary key)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("abirvalg")
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t2 values ()
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@ -164,7 +301,6 @@ ROLLBACK /* added by mysqlbinlog */;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
@ -174,8 +310,24 @@ SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (word)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("Alas")
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@ -186,17 +338,6 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
SET INSERT_ID=1/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
--- --position --
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
@ -206,8 +347,69 @@ SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET INSERT_ID=1/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
--- --position --
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
use test/*!*/;
SET TIMESTAMP=1000000000/*!*/;
insert into t1 values ("Alas")
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
@ -359,31 +561,73 @@ SET @@session.collation_database=DEFAULT/*!*/;
create table t1 (a varchar(64) character set utf8)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.collation_database=7/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a)
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-#-#' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.collation_database=7/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-a-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-b-0' INTO TABLE `t1` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
LOAD DATA LOCAL INFILE 'MYSQLTEST_VARDIR/tmp/SQL_LOAD_MB-c-0' INTO TABLE `t1` CHARACTER SET koi8r FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a)
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
drop table t1
/*!*/;
DELIMITER ;
@ -399,9 +643,9 @@ We expect this value to be 1
The bug being tested was that 'Query' lines were not preceded by '#'
If the line is in the table, it had to have been preceded by a '#'
SELECT COUNT(*) AS `BUG#28293_expect_1` FROM patch WHERE a LIKE '%Query%';
BUG#28293_expect_1
1
SELECT COUNT(*) AS `BUG#28293_expect_3` FROM patch WHERE a LIKE '%Query%';
BUG#28293_expect_3
3
DROP TABLE patch;
FLUSH LOGS;
CREATE TABLE t1(a INT);
@ -426,7 +670,7 @@ CREATE TABLE t1 (a INT, b CHAR(64));
flush logs;
INSERT INTO t1 VALUES (1,USER());
flush logs;
mysqlbinlog var/log/master-bin.000017 > var/tmp/bug31611.sql
mysqlbinlog var/log/master-bin.000018 > var/tmp/bug31611.sql
mysql mysqltest1 -uuntrusted < var/tmp/bug31611.sql
INSERT INTO t1 VALUES (1,USER());
ERROR 42000: INSERT command denied to user 'untrusted'@'localhost' for table 't1'
@ -452,7 +696,7 @@ an_int 1000
a_decimal 907.79
a_string Just a test
DROP TABLE t1;
>> mysqlbinlog var/log/master-bin.000019 > var/tmp/bug32580.sql
>> mysqlbinlog var/log/master-bin.000020 > var/tmp/bug32580.sql
>> mysql test < var/tmp/bug32580.sql
SELECT * FROM t1;
a_real 158.883

File diff suppressed because it is too large Load Diff

View File

@ -2365,7 +2365,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t1
### SET
### @1=b'00000000' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=-128 (128) /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@ -2458,7 +2458,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t1
### SET
### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=-1 (255) /* TINYINT meta=0 nullable=1 is_null=0 */
@ -2553,7 +2553,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t1
### SET
### @1=NULL /* type=16 meta=256 nullable=1 is_null=1 */
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
### @3=NULL /* type=1 meta=0 nullable=1 is_null=1 */
### @4=NULL /* type=1 meta=0 nullable=1 is_null=1 */
@ -2580,7 +2580,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@ -2634,7 +2634,7 @@ BEGIN
### @79=3 /* INT meta=0 nullable=1 is_null=0 */
### INSERT INTO test.t1
### SET
### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@ -2727,7 +2727,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
### @1=b'00000000' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=-128 (128) /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@ -2807,7 +2807,7 @@ BEGIN
### @78=b'00000000' /* SET(1 bytes) meta=63489 nullable=1 is_null=0 */
### @79=1 /* INT meta=0 nullable=1 is_null=0 */
### SET
### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=-1 (255) /* TINYINT meta=0 nullable=1 is_null=0 */
@ -2900,7 +2900,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=-1 (255) /* TINYINT meta=0 nullable=1 is_null=0 */
@ -2980,7 +2980,7 @@ BEGIN
### @78=b'00000111' /* SET(1 bytes) meta=63489 nullable=1 is_null=0 */
### @79=2 /* INT meta=0 nullable=1 is_null=0 */
### SET
### @1=b'00000000' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=-128 (128) /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@ -3073,7 +3073,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
### @1=NULL /* type=16 meta=256 nullable=1 is_null=1 */
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
### @3=NULL /* type=1 meta=0 nullable=1 is_null=1 */
### @4=NULL /* type=1 meta=0 nullable=1 is_null=1 */
@ -3100,7 +3100,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@ -3153,7 +3153,7 @@ BEGIN
### @78=NULL /* TIMESTAMP meta=63489 nullable=1 is_null=1 */
### @79=3 /* INT meta=0 nullable=1 is_null=0 */
### SET
### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@ -3246,7 +3246,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@ -3326,7 +3326,7 @@ BEGIN
### @78=b'00000110' /* SET(1 bytes) meta=63489 nullable=1 is_null=0 */
### @79=4 /* INT meta=0 nullable=1 is_null=0 */
### SET
### @1=NULL /* type=16 meta=256 nullable=1 is_null=1 */
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
### @3=NULL /* type=1 meta=0 nullable=1 is_null=1 */
### @4=NULL /* type=1 meta=0 nullable=1 is_null=1 */
@ -3353,7 +3353,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@ -3419,7 +3419,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=-1 (255) /* TINYINT meta=0 nullable=1 is_null=0 */
@ -3512,7 +3512,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
### @1=b'00000000' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=-128 (128) /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@ -3605,7 +3605,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
### @1=b'00000001' /* BIT(8) meta=256 nullable=1 is_null=0 */
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
### @3=127 /* TINYINT meta=0 nullable=1 is_null=0 */
### @4=0 /* TINYINT meta=0 nullable=1 is_null=0 */
@ -3698,7 +3698,7 @@ BEGIN
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
### @1=NULL /* type=16 meta=256 nullable=1 is_null=1 */
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
### @3=NULL /* type=1 meta=0 nullable=1 is_null=1 */
### @4=NULL /* type=1 meta=0 nullable=1 is_null=1 */
@ -3725,7 +3725,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */

View File

@ -2584,7 +2584,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@ -3110,7 +3110,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@ -3365,7 +3365,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */
@ -3745,7 +3745,7 @@ BEGIN
### @25=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @26=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @27=NULL /* type=246 meta=2560 nullable=1 is_null=1 */
### @28=NULL /* type=10 meta=0 nullable=1 is_null=1 */
### @28=NULL /* type=14 meta=0 nullable=1 is_null=1 */
### @29=NULL /* type=12 meta=0 nullable=1 is_null=1 */
### @30=1000000000 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
### @31=NULL /* TIMESTAMP meta=0 nullable=1 is_null=1 */

View File

@ -215,7 +215,7 @@ COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
TRUNCATE TABLE t1
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
@ -223,21 +223,84 @@ SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t2
### SET
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### INSERT INTO test.t2
### SET
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### INSERT INTO test.t2
### SET
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t2
### WHERE
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=11 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### UPDATE test.t2
### WHERE
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=12 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### UPDATE test.t2
### WHERE
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=13 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1
COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t2
### WHERE
### @1=12 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
@ -293,71 +356,14 @@ BEGIN
### @1=12 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t2
### SET
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### INSERT INTO test.t2
### SET
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### INSERT INTO test.t2
### SET
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t2
### WHERE
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=11 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### UPDATE test.t2
### WHERE
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=12 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### UPDATE test.t2
### WHERE
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=13 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t2
### WHERE
### @1=12 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t2
@ -369,55 +375,6 @@ BEGIN
/*!*/;
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t1
### SET
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### INSERT INTO test.t1
### SET
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### INSERT INTO test.t1
### SET
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
### UPDATE test.t1
### WHERE
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=11 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-1' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### UPDATE test.t1
### WHERE
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=12 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### UPDATE test.t1
### WHERE
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
### SET
### @1=13 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t1` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
### DELETE FROM test.t1
### WHERE
### @1=12 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-2' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
### INSERT INTO test.t2
@ -433,6 +390,16 @@ BEGIN
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
@ -458,6 +425,16 @@ BEGIN
### @1=13 /* INT meta=0 nullable=1 is_null=0 */
### @2='varchar-3' /* VARSTRING(20) meta=20 nullable=1 is_null=0 */
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
/*!*/;
# at #
# at #
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t2` mapped to number #
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
@ -468,12 +445,7 @@ BEGIN
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
ROLLBACK
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
BEGIN
COMMIT
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
@ -481,9 +453,6 @@ SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t1
/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Xid = #
COMMIT/*!*/;
# at #
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
SET TIMESTAMP=1000000000/*!*/;
TRUNCATE TABLE t2

View File

@ -419,6 +419,38 @@ The following options may be given as the first argument:
default}
--partition[=name] Enable or disable partition plugin. Possible values are
ON, OFF, FORCE (don't start if the plugin fails to load).
--performance-schema
Enable the performance schema.
--performance-schema-events-waits-history-long-size=#
Number of rows in EVENTS_WAITS_HISTORY_LONG.
--performance-schema-events-waits-history-size=#
Number of rows per thread in EVENTS_WAITS_HISTORY.
--performance-schema-max-cond-classes=#
Maximum number of condition instruments.
--performance-schema-max-cond-instances=#
Maximum number of instrumented condition objects.
--performance-schema-max-file-classes=#
Maximum number of file instruments.
--performance-schema-max-file-handles=#
Maximum number of opened instrumented files.
--performance-schema-max-file-instances=#
Maximum number of instrumented files.
--performance-schema-max-mutex-classes=#
Maximum number of mutex instruments.
--performance-schema-max-mutex-instances=#
Maximum number of instrumented MUTEX objects.
--performance-schema-max-rwlock-classes=#
Maximum number of rwlock instruments.
--performance-schema-max-rwlock-instances=#
Maximum number of instrumented RWLOCK objects.
--performance-schema-max-table-handles=#
Maximum number of opened instrumented tables.
--performance-schema-max-table-instances=#
Maximum number of instrumented tables.
--performance-schema-max-thread-classes=#
Maximum number of thread instruments.
--performance-schema-max-thread-instances=#
Maximum number of instrumented threads.
--pid-file=name Pid file used by safe_mysqld
--plugin-dir=name Directory for plugins
--plugin-load=name Optional semicolon-separated list of plugins to load,
@ -621,6 +653,12 @@ The following options may be given as the first argument:
Number of times the slave SQL thread will retry a
transaction in case it failed with a deadlock or elapsed
lock wait timeout, before giving up and stopping
--slave-type-conversions=name
Set of slave type conversions that are enabled. Legal
values are: ALL_LOSSY to enable lossy conversions and
ALL_NON_LOSSY to enable non-lossy conversions. If the
variable is assigned the empty set, no conversions are
allowed and it is expected that the types match exactly.
--slow-launch-time=#
If creating the thread takes longer than this value (in
seconds), the Slow_launch_threads counter will be
@ -718,220 +756,237 @@ The following options may be given as the first argument:
-W, --warnings[=#] Deprecated; use --log-warnings instead.
Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
----------------------------------- --------------------------------------
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
auto-increment-offset 1
automatic-sp-privileges TRUE
back-log 50
big-tables FALSE
bind-address (No default value)
binlog-cache-size 32768
binlog-format STATEMENT
binlog-row-event-max-size 1024
blackhole ON
bulk-insert-buffer-size 8388608
character-set-client-handshake TRUE
character-set-filesystem binary
character-set-server latin1
character-sets-dir MYSQL_SHAREDIR/charsets/
chroot (No default value)
collation-server latin1_swedish_ci
completion-type NO_CHAIN
concurrent-insert AUTO
connect-timeout 10
console FALSE
date-format %Y-%m-%d
datetime-format %Y-%m-%d %H:%i:%s
default-character-set latin1
default-collation latin1_swedish_ci
default-storage-engine MyISAM
default-time-zone (No default value)
default-week-format 0
delay-key-write ON
delayed-insert-limit 100
delayed-insert-timeout 300
delayed-queue-size 1000
disconnect-slave-event-count 0
div-precision-increment 4
enable-locking FALSE
engine-condition-pushdown TRUE
event-scheduler OFF
expire-logs-days 0
external-locking FALSE
federated ON
flush FALSE
flush-time 0
ft-boolean-syntax + -><()~*:""&|
ft-max-word-len 84
ft-min-word-len 4
ft-query-expansion-limit 20
ft-stopword-file (No default value)
gdb FALSE
general-log FALSE
group-concat-max-len 1024
help TRUE
ignore-builtin-innodb FALSE
init-connect
init-file (No default value)
init-rpl-role MASTER
init-slave
interactive-timeout 28800
join-buffer-size 131072
keep-files-on-create FALSE
key-buffer-size 8388608
key-cache-age-threshold 300
key-cache-block-size 1024
key-cache-division-limit 100
language MYSQL_SHAREDIR/
large-pages FALSE
lc-messages en_US
lc-messages-dir MYSQL_SHAREDIR/
lc-time-names en_US
local-infile TRUE
log-bin (No default value)
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
log-error
log-isam myisam.log
log-output FILE
log-queries-not-using-indexes FALSE
log-short-format FALSE
log-slave-updates FALSE
log-slow-admin-statements FALSE
log-slow-slave-statements FALSE
log-tc tc.log
log-tc-size 24576
log-update (No default value)
log-warnings 1
long-query-time 10
low-priority-updates FALSE
lower-case-table-names 1
master-info-file master.info
master-retry-count 86400
max-allowed-packet 1048576
max-binlog-cache-size 18446744073709547520
max-binlog-dump-events 0
max-binlog-size 1073741824
max-connect-errors 10
max-connections 151
max-delayed-threads 20
max-error-count 64
max-heap-table-size 16777216
max-join-size 18446744073709551615
max-length-for-sort-data 1024
max-prepared-stmt-count 16382
max-relay-log-size 0
max-seeks-for-key 18446744073709551615
max-sort-length 1024
max-sp-recursion-depth 0
max-tmp-tables 32
max-user-connections 0
max-write-lock-count 18446744073709551615
memlock FALSE
min-examined-row-limit 0
multi-range-count 256
myisam-block-size 1024
myisam-data-pointer-size 6
myisam-max-sort-file-size 9223372036853727232
myisam-mmap-size 18446744073709551615
myisam-recover-options OFF
myisam-repair-threads 1
myisam-sort-buffer-size 8388608
myisam-stats-method nulls_unequal
myisam-use-mmap FALSE
net-buffer-length 16384
net-read-timeout 30
net-retry-count 10
net-write-timeout 60
new FALSE
old FALSE
old-alter-table FALSE
old-passwords FALSE
old-style-user-limits FALSE
optimizer-prune-level 1
optimizer-search-depth 62
optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
partition ON
plugin-dir MYSQL_LIBDIR/mysql/plugin
plugin-load (No default value)
port 3306
port-open-timeout 0
preload-buffer-size 32768
profiling-history-size 15
query-alloc-block-size 8192
query-cache-limit 1048576
query-cache-min-res-unit 4096
query-cache-size 0
query-cache-type ON
query-cache-wlock-invalidate FALSE
query-prealloc-size 8192
range-alloc-block-size 4096
read-buffer-size 131072
read-only FALSE
read-rnd-buffer-size 262144
record-buffer 131072
relay-log (No default value)
relay-log-index (No default value)
relay-log-info-file relay-log.info
relay-log-purge TRUE
relay-log-recovery FALSE
relay-log-space-limit 0
replicate-same-server-id FALSE
report-host (No default value)
report-password (No default value)
report-port 3306
report-user (No default value)
rpl-recovery-rank 0
safe-user-create FALSE
secure-auth FALSE
secure-file-priv (No default value)
server-id 0
show-slave-auth-info FALSE
skip-grant-tables TRUE
skip-networking FALSE
skip-show-database FALSE
skip-slave-start FALSE
slave-compressed-protocol FALSE
slave-exec-mode STRICT
slave-net-timeout 3600
slave-skip-errors (No default value)
slave-transaction-retries 10
slow-launch-time 2
slow-query-log FALSE
socket /tmp/mysql.sock
sort-buffer-size 2097152
sporadic-binlog-dump-fail FALSE
sql-mode
symbolic-links FALSE
sync-binlog 0
sync-frm TRUE
sync-master-info 0
sync-relay-log 0
sync-relay-log-info 0
sysdate-is-now FALSE
table-cache 400
table-definition-cache 400
table-lock-wait-timeout 50
table-open-cache 400
tc-heuristic-recover COMMIT
thread-cache-size 0
thread-handling one-thread-per-connection
thread-stack 262144
time-format %H:%i:%s
timed-mutexes FALSE
tmp-table-size 16777216
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
updatable-views-with-limit YES
use-symbolic-links FALSE
verbose TRUE
wait-timeout 28800
warnings 1
and boolean options {FALSE|TRUE} Value (after reading options)
------------------------------------------------- ------------------------
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
auto-increment-offset 1
automatic-sp-privileges TRUE
back-log 50
big-tables FALSE
bind-address (No default value)
binlog-cache-size 32768
binlog-format STATEMENT
binlog-row-event-max-size 1024
blackhole ON
bulk-insert-buffer-size 8388608
character-set-client-handshake TRUE
character-set-filesystem binary
character-set-server latin1
character-sets-dir MYSQL_SHAREDIR/charsets/
chroot (No default value)
collation-server latin1_swedish_ci
completion-type NO_CHAIN
concurrent-insert AUTO
connect-timeout 10
console FALSE
date-format %Y-%m-%d
datetime-format %Y-%m-%d %H:%i:%s
default-character-set latin1
default-collation latin1_swedish_ci
default-storage-engine MyISAM
default-time-zone (No default value)
default-week-format 0
delay-key-write ON
delayed-insert-limit 100
delayed-insert-timeout 300
delayed-queue-size 1000
disconnect-slave-event-count 0
div-precision-increment 4
enable-locking FALSE
engine-condition-pushdown TRUE
event-scheduler OFF
expire-logs-days 0
external-locking FALSE
federated ON
flush FALSE
flush-time 0
ft-boolean-syntax + -><()~*:""&|
ft-max-word-len 84
ft-min-word-len 4
ft-query-expansion-limit 20
ft-stopword-file (No default value)
gdb FALSE
general-log FALSE
group-concat-max-len 1024
help TRUE
ignore-builtin-innodb FALSE
init-connect
init-file (No default value)
init-rpl-role MASTER
init-slave
interactive-timeout 28800
join-buffer-size 131072
keep-files-on-create FALSE
key-buffer-size 8388608
key-cache-age-threshold 300
key-cache-block-size 1024
key-cache-division-limit 100
language MYSQL_SHAREDIR/
large-pages FALSE
lc-messages en_US
lc-messages-dir MYSQL_SHAREDIR/
lc-time-names en_US
local-infile TRUE
log-bin (No default value)
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
log-error
log-isam myisam.log
log-output FILE
log-queries-not-using-indexes FALSE
log-short-format FALSE
log-slave-updates FALSE
log-slow-admin-statements FALSE
log-slow-slave-statements FALSE
log-tc tc.log
log-tc-size 24576
log-update (No default value)
log-warnings 1
long-query-time 10
low-priority-updates FALSE
lower-case-table-names 1
master-info-file master.info
master-retry-count 86400
max-allowed-packet 1048576
max-binlog-cache-size 18446744073709547520
max-binlog-dump-events 0
max-binlog-size 1073741824
max-connect-errors 10
max-connections 151
max-delayed-threads 20
max-error-count 64
max-heap-table-size 16777216
max-join-size 18446744073709551615
max-length-for-sort-data 1024
max-prepared-stmt-count 16382
max-relay-log-size 0
max-seeks-for-key 18446744073709551615
max-sort-length 1024
max-sp-recursion-depth 0
max-tmp-tables 32
max-user-connections 0
max-write-lock-count 18446744073709551615
memlock FALSE
min-examined-row-limit 0
multi-range-count 256
myisam-block-size 1024
myisam-data-pointer-size 6
myisam-max-sort-file-size 9223372036853727232
myisam-mmap-size 18446744073709551615
myisam-recover-options OFF
myisam-repair-threads 1
myisam-sort-buffer-size 8388608
myisam-stats-method nulls_unequal
myisam-use-mmap FALSE
net-buffer-length 16384
net-read-timeout 30
net-retry-count 10
net-write-timeout 60
new FALSE
old FALSE
old-alter-table FALSE
old-passwords FALSE
old-style-user-limits FALSE
optimizer-prune-level 1
optimizer-search-depth 62
optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
partition ON
performance-schema FALSE
performance-schema-events-waits-history-long-size 10000
performance-schema-events-waits-history-size 10
performance-schema-max-cond-classes 80
performance-schema-max-cond-instances 1000
performance-schema-max-file-classes 50
performance-schema-max-file-handles 32768
performance-schema-max-file-instances 10000
performance-schema-max-mutex-classes 200
performance-schema-max-mutex-instances 1000
performance-schema-max-rwlock-classes 20
performance-schema-max-rwlock-instances 1000
performance-schema-max-table-handles 100000
performance-schema-max-table-instances 50000
performance-schema-max-thread-classes 50
performance-schema-max-thread-instances 1000
plugin-dir MYSQL_LIBDIR/mysql/plugin
plugin-load (No default value)
port 3306
port-open-timeout 0
preload-buffer-size 32768
profiling-history-size 15
query-alloc-block-size 8192
query-cache-limit 1048576
query-cache-min-res-unit 4096
query-cache-size 0
query-cache-type ON
query-cache-wlock-invalidate FALSE
query-prealloc-size 8192
range-alloc-block-size 4096
read-buffer-size 131072
read-only FALSE
read-rnd-buffer-size 262144
record-buffer 131072
relay-log (No default value)
relay-log-index (No default value)
relay-log-info-file relay-log.info
relay-log-purge TRUE
relay-log-recovery FALSE
relay-log-space-limit 0
replicate-same-server-id FALSE
report-host (No default value)
report-password (No default value)
report-port 3306
report-user (No default value)
rpl-recovery-rank 0
safe-user-create FALSE
secure-auth FALSE
secure-file-priv (No default value)
server-id 0
show-slave-auth-info FALSE
skip-grant-tables TRUE
skip-networking FALSE
skip-show-database FALSE
skip-slave-start FALSE
slave-compressed-protocol FALSE
slave-exec-mode STRICT
slave-net-timeout 3600
slave-skip-errors (No default value)
slave-transaction-retries 10
slave-type-conversions
slow-launch-time 2
slow-query-log FALSE
socket /tmp/mysql.sock
sort-buffer-size 2097152
sporadic-binlog-dump-fail FALSE
sql-mode
symbolic-links FALSE
sync-binlog 0
sync-frm TRUE
sync-master-info 0
sync-relay-log 0
sync-relay-log-info 0
sysdate-is-now FALSE
table-cache 400
table-definition-cache 400
table-lock-wait-timeout 50
table-open-cache 400
tc-heuristic-recover COMMIT
thread-cache-size 0
thread-handling one-thread-per-connection
thread-stack 262144
time-format %H:%i:%s
timed-mutexes FALSE
tmp-table-size 16777216
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
updatable-views-with-limit YES
use-symbolic-links FALSE
verbose TRUE
wait-timeout 28800
warnings 1
To see what values a running MySQL server is using, type
'mysqladmin variables' instead of 'mysqld --verbose --help'.

View File

@ -419,6 +419,38 @@ The following options may be given as the first argument:
default}
--partition[=name] Enable or disable partition plugin. Possible values are
ON, OFF, FORCE (don't start if the plugin fails to load).
--performance-schema
Enable the performance schema.
--performance-schema-events-waits-history-long-size=#
Number of rows in EVENTS_WAITS_HISTORY_LONG.
--performance-schema-events-waits-history-size=#
Number of rows per thread in EVENTS_WAITS_HISTORY.
--performance-schema-max-cond-classes=#
Maximum number of condition instruments.
--performance-schema-max-cond-instances=#
Maximum number of instrumented condition objects.
--performance-schema-max-file-classes=#
Maximum number of file instruments.
--performance-schema-max-file-handles=#
Maximum number of opened instrumented files.
--performance-schema-max-file-instances=#
Maximum number of instrumented files.
--performance-schema-max-mutex-classes=#
Maximum number of mutex instruments.
--performance-schema-max-mutex-instances=#
Maximum number of instrumented MUTEX objects.
--performance-schema-max-rwlock-classes=#
Maximum number of rwlock instruments.
--performance-schema-max-rwlock-instances=#
Maximum number of instrumented RWLOCK objects.
--performance-schema-max-table-handles=#
Maximum number of opened instrumented tables.
--performance-schema-max-table-instances=#
Maximum number of instrumented tables.
--performance-schema-max-thread-classes=#
Maximum number of thread instruments.
--performance-schema-max-thread-instances=#
Maximum number of instrumented threads.
--pid-file=name Pid file used by safe_mysqld
--plugin-dir=name Directory for plugins
--plugin-load=name Optional semicolon-separated list of plugins to load,
@ -624,6 +656,12 @@ The following options may be given as the first argument:
Number of times the slave SQL thread will retry a
transaction in case it failed with a deadlock or elapsed
lock wait timeout, before giving up and stopping
--slave-type-conversions=name
Set of slave type conversions that are enabled. Legal
values are: ALL_LOSSY to enable lossy conversions and
ALL_NON_LOSSY to enable non-lossy conversions. If the
variable is assigned the empty set, no conversions are
allowed and it is expected that the types match exactly.
--slow-launch-time=#
If creating the thread takes longer than this value (in
seconds), the Slow_launch_threads counter will be
@ -722,222 +760,239 @@ The following options may be given as the first argument:
-W, --warnings[=#] Deprecated; use --log-warnings instead.
Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- ----------------------------------------
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
auto-increment-offset 1
automatic-sp-privileges TRUE
back-log 50
big-tables FALSE
bind-address (No default value)
binlog-cache-size 32768
binlog-format STATEMENT
binlog-row-event-max-size 1024
blackhole ON
bulk-insert-buffer-size 8388608
character-set-client-handshake TRUE
character-set-filesystem binary
character-set-server latin1
character-sets-dir MYSQL_SHAREDIR/charsets/
chroot (No default value)
collation-server latin1_swedish_ci
completion-type NO_CHAIN
concurrent-insert AUTO
connect-timeout 10
console FALSE
date-format %Y-%m-%d
datetime-format %Y-%m-%d %H:%i:%s
default-character-set latin1
default-collation latin1_swedish_ci
default-storage-engine MyISAM
default-time-zone (No default value)
default-week-format 0
delay-key-write ON
delayed-insert-limit 100
delayed-insert-timeout 300
delayed-queue-size 1000
disconnect-slave-event-count 0
div-precision-increment 4
enable-locking FALSE
engine-condition-pushdown TRUE
event-scheduler OFF
expire-logs-days 0
external-locking FALSE
federated ON
flush FALSE
flush-time 1800
ft-boolean-syntax + -><()~*:""&|
ft-max-word-len 84
ft-min-word-len 4
ft-query-expansion-limit 20
ft-stopword-file (No default value)
gdb FALSE
general-log FALSE
group-concat-max-len 1024
help TRUE
ignore-builtin-innodb FALSE
init-connect
init-file (No default value)
init-rpl-role MASTER
init-slave
interactive-timeout 28800
join-buffer-size 131072
keep-files-on-create FALSE
key-buffer-size 8388608
key-cache-age-threshold 300
key-cache-block-size 1024
key-cache-division-limit 100
language MYSQL_SHAREDIR/
lc-messages en_US
lc-messages-dir MYSQL_SHAREDIR/
lc-time-names en_US
local-infile TRUE
log-bin (No default value)
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
log-error
log-isam myisam.log
log-output FILE
log-queries-not-using-indexes FALSE
log-short-format FALSE
log-slave-updates FALSE
log-slow-admin-statements FALSE
log-slow-slave-statements FALSE
log-tc tc.log
log-tc-size 24576
log-update (No default value)
log-warnings 1
long-query-time 10
low-priority-updates FALSE
lower-case-table-names 1
master-info-file master.info
master-retry-count 86400
max-allowed-packet 1048576
max-binlog-cache-size 18446744073709547520
max-binlog-dump-events 0
max-binlog-size 1073741824
max-connect-errors 10
max-connections 151
max-delayed-threads 20
max-error-count 64
max-heap-table-size 16777216
max-join-size 18446744073709551615
max-length-for-sort-data 1024
max-prepared-stmt-count 16382
max-relay-log-size 0
max-seeks-for-key 18446744073709551615
max-sort-length 1024
max-sp-recursion-depth 0
max-tmp-tables 32
max-user-connections 0
max-write-lock-count 18446744073709551615
memlock FALSE
min-examined-row-limit 0
multi-range-count 256
myisam-block-size 1024
myisam-data-pointer-size 6
myisam-max-sort-file-size 9223372036853727232
myisam-mmap-size 18446744073709551615
myisam-recover-options OFF
myisam-repair-threads 1
myisam-sort-buffer-size 8388608
myisam-stats-method nulls_unequal
myisam-use-mmap FALSE
named-pipe FALSE
net-buffer-length 16384
net-read-timeout 30
net-retry-count 10
net-write-timeout 60
new FALSE
old FALSE
old-alter-table FALSE
old-passwords FALSE
old-style-user-limits FALSE
optimizer-prune-level 1
optimizer-search-depth 62
optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
partition ON
plugin-dir MYSQL_LIBDIR/plugin
plugin-load (No default value)
port 3306
port-open-timeout 0
preload-buffer-size 32768
profiling-history-size 15
query-alloc-block-size 8192
query-cache-limit 1048576
query-cache-min-res-unit 4096
query-cache-size 0
query-cache-type ON
query-cache-wlock-invalidate FALSE
query-prealloc-size 8192
range-alloc-block-size 4096
read-buffer-size 131072
read-only FALSE
read-rnd-buffer-size 262144
record-buffer 131072
relay-log (No default value)
relay-log-index (No default value)
relay-log-info-file relay-log.info
relay-log-purge TRUE
relay-log-recovery FALSE
relay-log-space-limit 0
replicate-same-server-id FALSE
report-host (No default value)
report-password (No default value)
report-port 3306
report-user (No default value)
rpl-recovery-rank 0
safe-user-create FALSE
secure-auth FALSE
secure-file-priv (No default value)
server-id 0
shared-memory FALSE
shared-memory-base-name MYSQL
show-slave-auth-info FALSE
skip-grant-tables TRUE
skip-networking FALSE
skip-show-database FALSE
skip-slave-start FALSE
slave-compressed-protocol FALSE
slave-exec-mode STRICT
slave-net-timeout 3600
slave-skip-errors (No default value)
slave-transaction-retries 10
slow-launch-time 2
slow-query-log FALSE
socket MySQL
sort-buffer-size 2097152
sporadic-binlog-dump-fail FALSE
sql-mode
symbolic-links FALSE
sync-binlog 0
sync-frm TRUE
sync-master-info 0
sync-relay-log 0
sync-relay-log-info 0
sysdate-is-now FALSE
table-cache 400
table-definition-cache 400
table-lock-wait-timeout 50
table-open-cache 400
tc-heuristic-recover COMMIT
thread-cache-size 0
thread-handling one-thread-per-connection
thread-stack 262144
time-format %H:%i:%s
timed-mutexes FALSE
tmp-table-size 16777216
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
updatable-views-with-limit YES
use-symbolic-links FALSE
verbose TRUE
wait-timeout 28800
warnings 1
and boolean options {FALSE|TRUE} Value (after reading options)
------------------------------------------------- ------------------------
abort-slave-event-count 0
allow-suspicious-udfs FALSE
archive ON
auto-increment-increment 1
auto-increment-offset 1
automatic-sp-privileges TRUE
back-log 50
big-tables FALSE
bind-address (No default value)
binlog-cache-size 32768
binlog-format STATEMENT
binlog-row-event-max-size 1024
blackhole ON
bulk-insert-buffer-size 8388608
character-set-client-handshake TRUE
character-set-filesystem binary
character-set-server latin1
character-sets-dir MYSQL_SHAREDIR/charsets/
chroot (No default value)
collation-server latin1_swedish_ci
completion-type NO_CHAIN
concurrent-insert AUTO
connect-timeout 10
console FALSE
date-format %Y-%m-%d
datetime-format %Y-%m-%d %H:%i:%s
default-character-set latin1
default-collation latin1_swedish_ci
default-storage-engine MyISAM
default-time-zone (No default value)
default-week-format 0
delay-key-write ON
delayed-insert-limit 100
delayed-insert-timeout 300
delayed-queue-size 1000
disconnect-slave-event-count 0
div-precision-increment 4
enable-locking FALSE
engine-condition-pushdown TRUE
event-scheduler OFF
expire-logs-days 0
external-locking FALSE
federated ON
flush FALSE
flush-time 1800
ft-boolean-syntax + -><()~*:""&|
ft-max-word-len 84
ft-min-word-len 4
ft-query-expansion-limit 20
ft-stopword-file (No default value)
gdb FALSE
general-log FALSE
group-concat-max-len 1024
help TRUE
ignore-builtin-innodb FALSE
init-connect
init-file (No default value)
init-rpl-role MASTER
init-slave
interactive-timeout 28800
join-buffer-size 131072
keep-files-on-create FALSE
key-buffer-size 8388608
key-cache-age-threshold 300
key-cache-block-size 1024
key-cache-division-limit 100
language MYSQL_SHAREDIR/
lc-messages en_US
lc-messages-dir MYSQL_SHAREDIR/
lc-time-names en_US
local-infile TRUE
log-bin (No default value)
log-bin-index (No default value)
log-bin-trust-function-creators FALSE
log-error
log-isam myisam.log
log-output FILE
log-queries-not-using-indexes FALSE
log-short-format FALSE
log-slave-updates FALSE
log-slow-admin-statements FALSE
log-slow-slave-statements FALSE
log-tc tc.log
log-tc-size 24576
log-update (No default value)
log-warnings 1
long-query-time 10
low-priority-updates FALSE
lower-case-table-names 1
master-info-file master.info
master-retry-count 86400
max-allowed-packet 1048576
max-binlog-cache-size 18446744073709547520
max-binlog-dump-events 0
max-binlog-size 1073741824
max-connect-errors 10
max-connections 151
max-delayed-threads 20
max-error-count 64
max-heap-table-size 16777216
max-join-size 18446744073709551615
max-length-for-sort-data 1024
max-prepared-stmt-count 16382
max-relay-log-size 0
max-seeks-for-key 18446744073709551615
max-sort-length 1024
max-sp-recursion-depth 0
max-tmp-tables 32
max-user-connections 0
max-write-lock-count 18446744073709551615
memlock FALSE
min-examined-row-limit 0
multi-range-count 256
myisam-block-size 1024
myisam-data-pointer-size 6
myisam-max-sort-file-size 9223372036853727232
myisam-mmap-size 18446744073709551615
myisam-recover-options OFF
myisam-repair-threads 1
myisam-sort-buffer-size 8388608
myisam-stats-method nulls_unequal
myisam-use-mmap FALSE
named-pipe FALSE
net-buffer-length 16384
net-read-timeout 30
net-retry-count 10
net-write-timeout 60
new FALSE
old FALSE
old-alter-table FALSE
old-passwords FALSE
old-style-user-limits FALSE
optimizer-prune-level 1
optimizer-search-depth 62
optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
partition ON
performance-schema FALSE
performance-schema-events-waits-history-long-size 10000
performance-schema-events-waits-history-size 10
performance-schema-max-cond-classes 80
performance-schema-max-cond-instances 1000
performance-schema-max-file-classes 50
performance-schema-max-file-handles 32768
performance-schema-max-file-instances 10000
performance-schema-max-mutex-classes 200
performance-schema-max-mutex-instances 1000
performance-schema-max-rwlock-classes 20
performance-schema-max-rwlock-instances 1000
performance-schema-max-table-handles 100000
performance-schema-max-table-instances 50000
performance-schema-max-thread-classes 50
performance-schema-max-thread-instances 1000
plugin-dir MYSQL_LIBDIR/plugin
plugin-load (No default value)
port 3306
port-open-timeout 0
preload-buffer-size 32768
profiling-history-size 15
query-alloc-block-size 8192
query-cache-limit 1048576
query-cache-min-res-unit 4096
query-cache-size 0
query-cache-type ON
query-cache-wlock-invalidate FALSE
query-prealloc-size 8192
range-alloc-block-size 4096
read-buffer-size 131072
read-only FALSE
read-rnd-buffer-size 262144
record-buffer 131072
relay-log (No default value)
relay-log-index (No default value)
relay-log-info-file relay-log.info
relay-log-purge TRUE
relay-log-recovery FALSE
relay-log-space-limit 0
replicate-same-server-id FALSE
report-host (No default value)
report-password (No default value)
report-port 3306
report-user (No default value)
rpl-recovery-rank 0
safe-user-create FALSE
secure-auth FALSE
secure-file-priv (No default value)
server-id 0
shared-memory FALSE
shared-memory-base-name MYSQL
show-slave-auth-info FALSE
skip-grant-tables TRUE
skip-networking FALSE
skip-show-database FALSE
skip-slave-start FALSE
slave-compressed-protocol FALSE
slave-exec-mode STRICT
slave-net-timeout 3600
slave-skip-errors (No default value)
slave-transaction-retries 10
slave-type-conversions
slow-launch-time 2
slow-query-log FALSE
socket MySQL
sort-buffer-size 2097152
sporadic-binlog-dump-fail FALSE
sql-mode
symbolic-links FALSE
sync-binlog 0
sync-frm TRUE
sync-master-info 0
sync-relay-log 0
sync-relay-log-info 0
sysdate-is-now FALSE
table-cache 400
table-definition-cache 400
table-lock-wait-timeout 50
table-open-cache 400
tc-heuristic-recover COMMIT
thread-cache-size 0
thread-handling one-thread-per-connection
thread-stack 262144
time-format %H:%i:%s
timed-mutexes FALSE
tmp-table-size 16777216
transaction-alloc-block-size 8192
transaction-isolation REPEATABLE-READ
transaction-prealloc-size 4096
updatable-views-with-limit YES
use-symbolic-links FALSE
verbose TRUE
wait-timeout 28800
warnings 1
To see what values a running MySQL server is using, type
'mysqladmin variables' instead of 'mysqld --verbose --help'.

View File

@ -42,7 +42,7 @@ id
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN;
INSERT INTO t1 VALUES(9);
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
COMMIT;
COMMIT;
DROP TABLE t1;

View File

@ -262,6 +262,7 @@ Database
information_schema
mtr
mysql
performance_schema
test
prepare stmt4 from ' show tables from test like ''t2%'' ';
execute stmt4;

View File

@ -9,5 +9,6 @@ information_schema
foo
mtr
mysql
performance_schema
test
drop schema foo;

View File

@ -142,6 +142,7 @@ Database
information_schema
mtr
mysql
performance_schema
test
show databases like "test%";
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr

View File

@ -8,18 +8,20 @@ SET @var2=char(ascii('a'));
insert into t1 values (@var1),(@var2);
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # User var # # @`a b`=_latin1 0x68656C6C6F COLLATE latin1_swedish_ci
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(@`a b`)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # User var # # @`var1`=_latin1 0x273B616161 COLLATE latin1_swedish_ci
master-bin.000001 # User var # # @`var2`=_binary 0x61 COLLATE binary
master-bin.000001 # Query # # use `test`; insert into t1 values (@var1),(@var2)
master-bin.000001 # Query # # COMMIT
flush logs;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`/*!*/;
use test/*!*/;
SET TIMESTAMP=10000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
@ -29,13 +31,27 @@ SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
SET @`a b`:=_latin1 0x68656C6C6F COLLATE `latin1_swedish_ci`/*!*/;
use test/*!*/;
SET TIMESTAMP=10000/*!*/;
INSERT INTO t1 VALUES(@`a b`)
/*!*/;
SET TIMESTAMP=10000/*!*/;
COMMIT
/*!*/;
SET TIMESTAMP=10000/*!*/;
BEGIN
/*!*/;
SET @`var1`:=_latin1 0x273B616161 COLLATE `latin1_swedish_ci`/*!*/;
SET @`var2`:=_binary 0x61 COLLATE `binary`/*!*/;
SET TIMESTAMP=10000/*!*/;
insert into t1 values (@var1),(@var2)
/*!*/;
SET TIMESTAMP=10000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;

View File

@ -29,9 +29,13 @@ show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query # # use `test`; create table t1 (a int)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # drop database if exists mysqltest1
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table tt1, t1
FLUSH STATUS;
set binlog_format=mixed;
@ -65,9 +69,13 @@ show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query # # use `test`; create table t1 (a int)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # drop database if exists mysqltest1
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table tt1, t1
FLUSH STATUS;
set binlog_format=row;
@ -116,4 +124,5 @@ Database
information_schema
mtr
mysql
performance_schema
test

View File

@ -0,0 +1,90 @@
set @save_binlog_format= @@global.binlog_format;
create table t1 (a int) engine= myisam;
create table t2 (a int) engine= innodb;
SELECT @@session.binlog_format;
@@session.binlog_format
ROW
SET AUTOCOMMIT=1;
# Test that the session variable 'binlog_format'
# is writable outside a transaction.
set @@session.binlog_format= statement;
SELECT @@session.binlog_format;
@@session.binlog_format
STATEMENT
begin;
# Test that the session variable 'binlog_format' is read-only
# inside a transaction with no preceding updates.
set @@session.binlog_format= mixed;
ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
insert into t2 values (1);
# Test that the session variable 'binlog_format' is read-only
# inside a transaction with preceding transactional updates.
set @@session.binlog_format= row;
ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
commit;
begin;
insert into t1 values (2);
# Test that the session variable 'binlog_format' is read-only
# inside a transaction with preceding non-transactional updates.
set @@session.binlog_format= statement;
ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
commit;
# Test that the session variable 'binlog_format' is writable
# when AUTOCOMMIT=0, before a transaction has started.
set AUTOCOMMIT=0;
set @@session.binlog_format= row;
SELECT @@session.binlog_format;
@@session.binlog_format
ROW
insert into t1 values (4);
# Test that the session variable 'binlog_format' is read-only inside an
# AUTOCOMMIT=0 transaction with preceding non-transactional updates.
set @@session.binlog_format= statement;
ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
SELECT @@session.binlog_format;
@@session.binlog_format
ROW
commit;
insert into t2 values (5);
# Test that the session variable 'binlog_format' is read-only inside an
# AUTOCOMMIT=0 transaction with preceding transactional updates.
set @@session.binlog_format= row;
ERROR HY000: Cannot modify @@session.binlog_format inside a transaction
SELECT @@session.binlog_format;
@@session.binlog_format
ROW
commit;
begin;
insert into t2 values (6);
# Test that the global variable 'binlog_format' is writable
# inside a transaction.
SELECT @@global.binlog_format;
@@global.binlog_format
ROW
set @@global.binlog_format= statement;
SELECT @@global.binlog_format;
@@global.binlog_format
STATEMENT
commit;
set @@global.binlog_format= @save_binlog_format;
create table t3(a int, b int) engine= innodb;
create table t4(a int) engine= innodb;
create table t5(a int) engine= innodb;
create trigger tr2 after insert on t3 for each row begin
insert into t4(a) values(1);
set @@session.binlog_format= statement;
insert into t4(a) values(2);
insert into t5(a) values(3);
end |
# Test that the session variable 'binlog_format' is read-only
# in sub-statements.
insert into t3(a,b) values(1,1);
ERROR HY000: Cannot change the binary logging format inside a stored function or trigger
SELECT @@session.binlog_format;
@@session.binlog_format
ROW
drop table t1;
drop table t2;
drop table t3;
drop table t4;
drop table t5;

View File

@ -14,12 +14,12 @@ SET BINLOG_FORMAT=STATEMENT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
UPDATE t1 SET b = 1*a WHERE a > 1;
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-UNCOMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
COMMIT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
UPDATE t1 SET b = 2*a WHERE a > 2;
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
COMMIT;
BEGIN;
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
@ -123,7 +123,7 @@ Binlog_cache_disk_use 0
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 1
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@ -132,7 +132,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1

View File

@ -1,3 +1,4 @@
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
create table t1 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
create table t2 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=MyISAM;
create table t3 (a int auto_increment, b int, PRIMARY KEY (a)) ENGINE=InnoDB;
@ -87,8 +88,10 @@ select @b /* must be 1 at the end of a stmt calling bug27563() */;
must have the update query event more to FD
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # User var # # @`b`=0
master-bin.000001 # Query # # use `test`; update t4 set b=b + bug27563(b)
master-bin.000001 # Query # # COMMIT
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null;
@ -123,8 +126,10 @@ select @b /* must be 1 at the end of a stmt calling bug27563() */;
must have the delete query event more to FD
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # User var # # @`b`=0
master-bin.000001 # Query # # use `test`; delete from t4 where b=bug27563(1) or b=bug27563(2)
master-bin.000001 # Query # # COMMIT
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null;

View File

@ -18,8 +18,10 @@ load data infile '../../std_data/rpl_loaddata.dat' into table t2 /* will be "kil
ERROR 70100: Query execution was interrupted
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE `t2` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a, b) ;file_id=#
master-bin.000001 # Query # # COMMIT
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog"))
is not null;

View File

@ -9,7 +9,7 @@ drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 1
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@ -18,7 +18,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1

View File

@ -1,406 +0,0 @@
###################################################################################
# CONFIGURATION
###################################################################################
CREATE TABLE nt_1 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
CREATE TABLE nt_2 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
CREATE TABLE tt_1 (a text, b int PRIMARY KEY) ENGINE = Innodb;
CREATE TABLE tt_2 (a text, b int PRIMARY KEY) ENGINE = Innodb;
CREATE TRIGGER tr_i_tt_1_to_nt_1 BEFORE INSERT ON tt_1 FOR EACH ROW
BEGIN
INSERT INTO nt_1 VALUES (NEW.a, NEW.b);
END|
CREATE TRIGGER tr_i_nt_2_to_tt_2 BEFORE INSERT ON nt_2 FOR EACH ROW
BEGIN
INSERT INTO tt_2 VALUES (NEW.a, NEW.b);
END|
###################################################################################
# CHECK HISTORY IN BINLOG
###################################################################################
*** "B M* T C" with error in M* generates in the binlog the "B M* R B T C" entries
INSERT INTO nt_1 VALUES ("new text 1", 1);
BEGIN;
INSERT INTO tt_1 VALUES (USER(), 2), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 3", 3);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 1", 1)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 3", 3)
master-bin.000001 # Xid # # COMMIT /* XID */
INSERT INTO tt_2 VALUES ("new text 4", 4);
BEGIN;
INSERT INTO nt_2 VALUES (USER(), 5), (USER(), 4);
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 6", 6);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 4", 4)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 6", 6)
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B M M* T C" with error in M* generates in the binlog the "B M M* T C" entries
INSERT INTO nt_1 VALUES ("new text 10", 10);
BEGIN;
INSERT INTO tt_1 VALUES ("new text 7", 7), ("new text 8", 8);
INSERT INTO tt_1 VALUES (USER(), 9), (USER(), 10);
ERROR 23000: Duplicate entry '10' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 11", 11);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 10", 10)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_1 VALUES ("new text 7", 7), ("new text 8", 8)
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 11", 11)
master-bin.000001 # Xid # # COMMIT /* XID */
INSERT INTO tt_2 VALUES ("new text 15", 15);
BEGIN;
INSERT INTO nt_2 VALUES ("new text 12", 12), ("new text 13", 13);
INSERT INTO nt_2 VALUES (USER(), 14), (USER(), 15);
ERROR 23000: Duplicate entry '15' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 16", 16);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 15", 15)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO nt_2 VALUES ("new text 12", 12), ("new text 13", 13)
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 16", 16)
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B M* M* T C" with error in M* generates in the binlog the "B M* R B M* R B T C" entries
INSERT INTO nt_1 VALUES ("new text 18", 18);
INSERT INTO nt_1 VALUES ("new text 20", 20);
BEGIN;
INSERT INTO tt_1 VALUES (USER(), 17), (USER(), 18);
ERROR 23000: Duplicate entry '18' for key 'PRIMARY'
INSERT INTO tt_1 VALUES (USER(), 19), (USER(), 20);
ERROR 23000: Duplicate entry '20' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 21", 21);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 18", 18)
master-bin.000001 # Query # # use `test`; INSERT INTO nt_1 VALUES ("new text 20", 20)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 21", 21)
master-bin.000001 # Xid # # COMMIT /* XID */
INSERT INTO tt_2 VALUES ("new text 23", 23);
INSERT INTO tt_2 VALUES ("new text 25", 25);
BEGIN;
INSERT INTO nt_2 VALUES (USER(), 22), (USER(), 23);
ERROR 23000: Duplicate entry '23' for key 'PRIMARY'
INSERT INTO nt_2 VALUES (USER(), 24), (USER(), 25);
ERROR 23000: Duplicate entry '25' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 26", 26);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 23", 23)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 25", 25)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 26", 26)
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B T INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates
*** in the binlog the following entries: "Nothing".
*** There is a bug in that will be fixed after WL#2687. Please, check BUG#47175 for further details.
TRUNCATE TABLE nt_2;
TRUNCATE TABLE tt_2;
INSERT INTO tt_2 VALUES ("new text 7", 7);
BEGIN;
INSERT INTO tt_2 VALUES ("new text 27", 27);
INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
ERROR 23000: Duplicate entry '7' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 28", 28);
ROLLBACK;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_2
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 7", 7)
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B INSERT M..SELECT* C" with an error in INSERT M...SELECT* generates
*** in the binlog the following entries: "B INSERT M..SELECT* R".
TRUNCATE TABLE nt_2;
TRUNCATE TABLE tt_2;
INSERT INTO tt_2 VALUES ("new text 7", 7);
BEGIN;
INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
ERROR 23000: Duplicate entry '7' for key 'PRIMARY'
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_2
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO tt_2 VALUES ("new text 7", 7)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
*** "B N N T C" generates in the binlog the "B N C B N C B T C" entries
TRUNCATE TABLE nt_1;
TRUNCATE TABLE tt_2;
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 1);
INSERT INTO nt_1 VALUES (USER(), 2);
INSERT INTO tt_2 VALUES (USER(), 3);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_1
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B N N T R" generates in the binlog the "B N C B N C B T R" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 4);
INSERT INTO nt_1 VALUES (USER(), 5);
INSERT INTO tt_2 VALUES (USER(), 6);
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
*** "B N* N* T C" with error in N* generates in the binlog the "B N R B N R B T C" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 7), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO nt_1 VALUES (USER(), 8), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO tt_2 VALUES (USER(), 9);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B N* N* T R" with error in N* generates in the binlog the "B N R B N R B T R" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 10), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO nt_1 VALUES (USER(), 11), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO tt_2 VALUES (USER(), 12);
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
*** "B N N T N T C" generates in the binlog the "B N C B N C B T N T C" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 13);
INSERT INTO nt_1 VALUES (USER(), 14);
INSERT INTO tt_2 VALUES (USER(), 15);
INSERT INTO nt_1 VALUES (USER(), 16);
INSERT INTO tt_2 VALUES (USER(), 17);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B N N T N T R" generates in the binlog the "B N C B N C B T N T R" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 18);
INSERT INTO nt_1 VALUES (USER(), 19);
INSERT INTO tt_2 VALUES (USER(), 20);
INSERT INTO nt_1 VALUES (USER(), 21);
INSERT INTO tt_2 VALUES (USER(), 22);
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
###################################################################################
# CLEAN
###################################################################################
DROP TABLE tt_1;
DROP TABLE tt_2;
DROP TABLE nt_1;
DROP TABLE nt_2;

View File

@ -1,3 +1,4 @@
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
CREATE TABLE t1m (m INT, n INT) ENGINE=MYISAM;
CREATE TABLE t1b (b INT, c INT) ENGINE=BLACKHOLE;
CREATE TABLE t1n (e INT, f INT) ENGINE=NDB;
@ -6,10 +7,15 @@ SET SESSION BINLOG_FORMAT=STATEMENT;
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
The last event before the COMMIT is use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
*** Please look in binlog_multi_engine.test if you have a diff here ****
START TRANSACTION;
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
COMMIT;
TRUNCATE t1m;
@ -20,8 +26,12 @@ Log_name Pos Event_type Server_id End_log_pos Info
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # use `test`; UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f
@ -39,10 +49,11 @@ RESET MASTER;
SET SESSION BINLOG_FORMAT=MIXED;
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
The last event before the COMMIT is use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c;
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
ERROR HY000: Cannot execute statement: binlogging impossible since more than one engine is involved and at least one engine is self-logging.
TRUNCATE t1m;
TRUNCATE t1b;
TRUNCATE t1n;
@ -51,14 +62,15 @@ Log_name Pos Event_type Server_id End_log_pos Info
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Query # # use `test`; INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2)
mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # BEGIN
mysqld-bin.000001 # Table_map # # table_id: # (test.t1n)
mysqld-bin.000001 # Table_map # # table_id: # (mysql.ndb_apply_status)
mysqld-bin.000001 # Write_rows # # table_id: #
mysqld-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
mysqld-bin.000001 # Query # # COMMIT
mysqld-bin.000001 # Query # # use `test`; UPDATE t1m, t1b SET m = 2, b = 3 WHERE n = c
mysqld-bin.000001 # Query # # use `test`; TRUNCATE t1m
mysqld-bin.000001 # Query # # use `test`; TRUNCATE t1b
mysqld-bin.000001 # Query # # use `test`; TRUNCATE t1n
@ -68,9 +80,9 @@ INSERT INTO t1m VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1b VALUES (1,1), (1,2), (2,1), (2,2);
INSERT INTO t1n VALUES (1,1), (1,2), (2,1), (2,2);
UPDATE t1m, t1n SET m = 2, e = 3 WHERE n = f;
ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
ERROR HY000: Cannot execute statement: binlogging impossible since more than one engine is involved and at least one engine is self-logging.
UPDATE t1n, t1b SET e = 2, b = 3 WHERE f = c;
ERROR HY000: Binary logging not possible. Message: Statement cannot be written atomically since more than one engine involved and at least one engine is self-logging
ERROR HY000: Cannot execute statement: binlogging impossible since more than one engine is involved and at least one engine is self-logging.
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
mysqld-bin.000001 # Query # # BEGIN

View File

@ -1,440 +0,0 @@
###################################################################################
# CONFIGURATION
###################################################################################
CREATE TABLE nt_1 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
CREATE TABLE nt_2 (a text, b int PRIMARY KEY) ENGINE = MyISAM;
CREATE TABLE tt_1 (a text, b int PRIMARY KEY) ENGINE = Innodb;
CREATE TABLE tt_2 (a text, b int PRIMARY KEY) ENGINE = Innodb;
CREATE TRIGGER tr_i_tt_1_to_nt_1 BEFORE INSERT ON tt_1 FOR EACH ROW
BEGIN
INSERT INTO nt_1 VALUES (NEW.a, NEW.b);
END|
CREATE TRIGGER tr_i_nt_2_to_tt_2 BEFORE INSERT ON nt_2 FOR EACH ROW
BEGIN
INSERT INTO tt_2 VALUES (NEW.a, NEW.b);
END|
###################################################################################
# CHECK HISTORY IN BINLOG
###################################################################################
*** "B M* T C" with error in M* generates in the binlog the "B M* R B T C" entries
INSERT INTO nt_1 VALUES ("new text 1", 1);
BEGIN;
INSERT INTO tt_1 VALUES (USER(), 2), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 3", 3);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
INSERT INTO tt_2 VALUES ("new text 4", 4);
BEGIN;
INSERT INTO nt_2 VALUES (USER(), 5), (USER(), 4);
ERROR 23000: Duplicate entry '4' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 6", 6);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B M M* T C" with error in M* generates in the binlog the "B M M* T C" entries
INSERT INTO nt_1 VALUES ("new text 10", 10);
BEGIN;
INSERT INTO tt_1 VALUES ("new text 7", 7), ("new text 8", 8);
INSERT INTO tt_1 VALUES (USER(), 9), (USER(), 10);
ERROR 23000: Duplicate entry '10' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 11", 11);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
INSERT INTO tt_2 VALUES ("new text 15", 15);
BEGIN;
INSERT INTO nt_2 VALUES ("new text 12", 12), ("new text 13", 13);
INSERT INTO nt_2 VALUES (USER(), 14), (USER(), 15);
ERROR 23000: Duplicate entry '15' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 16", 16);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B M* M* T C" with error in M* generates in the binlog the "B M* R B M* R B T C" entries
INSERT INTO nt_1 VALUES ("new text 18", 18);
INSERT INTO nt_1 VALUES ("new text 20", 20);
BEGIN;
INSERT INTO tt_1 VALUES (USER(), 17), (USER(), 18);
ERROR 23000: Duplicate entry '18' for key 'PRIMARY'
INSERT INTO tt_1 VALUES (USER(), 19), (USER(), 20);
ERROR 23000: Duplicate entry '20' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 21", 21);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_1)
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
INSERT INTO tt_2 VALUES ("new text 23", 23);
INSERT INTO tt_2 VALUES ("new text 25", 25);
BEGIN;
INSERT INTO nt_2 VALUES (USER(), 22), (USER(), 23);
ERROR 23000: Duplicate entry '23' for key 'PRIMARY'
INSERT INTO nt_2 VALUES (USER(), 24), (USER(), 25);
ERROR 23000: Duplicate entry '25' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 26", 26);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B T INSERT M...SELECT* C" with an error in INSERT M...SELECT* generates
*** in the binlog the following entries: "Nothing".
*** There is a bug in that will be fixed after WL#2687. Please, check BUG#47175 for further details.
TRUNCATE TABLE nt_2;
TRUNCATE TABLE tt_2;
INSERT INTO tt_2 VALUES ("new text 7", 7);
BEGIN;
INSERT INTO tt_2 VALUES ("new text 27", 27);
INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
ERROR 23000: Duplicate entry '7' for key 'PRIMARY'
INSERT INTO tt_2 VALUES ("new text 28", 28);
ROLLBACK;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_2
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B INSERT M..SELECT* C" with an error in INSERT M...SELECT* generates
*** in the binlog the following entries: "B INSERT M..SELECT* R".
TRUNCATE TABLE nt_2;
TRUNCATE TABLE tt_2;
INSERT INTO tt_2 VALUES ("new text 7", 7);
BEGIN;
INSERT INTO nt_2(a, b) SELECT USER(), b FROM nt_1;
ERROR 23000: Duplicate entry '7' for key 'PRIMARY'
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_2
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_2)
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
*** "B N N T C" generates in the binlog the "B N C B N C B T C" entries
TRUNCATE TABLE nt_1;
TRUNCATE TABLE tt_2;
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 1);
INSERT INTO nt_1 VALUES (USER(), 2);
INSERT INTO tt_2 VALUES (USER(), 3);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE nt_1
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; TRUNCATE TABLE tt_2
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B N N T R" generates in the binlog the "B N C B N C B T R" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 4);
INSERT INTO nt_1 VALUES (USER(), 5);
INSERT INTO tt_2 VALUES (USER(), 6);
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
*** "B N* N* T C" with error in N* generates in the binlog the "B N R B N R B T C" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 7), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO nt_1 VALUES (USER(), 8), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO tt_2 VALUES (USER(), 9);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B N* N* T R" with error in N* generates in the binlog the "B N R B N R B T R" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 10), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO nt_1 VALUES (USER(), 11), (USER(), 1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO tt_2 VALUES (USER(), 12);
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
*** "B N N T N T C" generates in the binlog the "B N C B N C B T N T C" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 13);
INSERT INTO nt_1 VALUES (USER(), 14);
INSERT INTO tt_2 VALUES (USER(), 15);
INSERT INTO nt_1 VALUES (USER(), 16);
INSERT INTO tt_2 VALUES (USER(), 17);
COMMIT;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
*** "B N N T N T R" generates in the binlog the "B N C B N C B T N T R" entries
BEGIN;
INSERT INTO nt_1 VALUES (USER(), 18);
INSERT INTO nt_1 VALUES (USER(), 19);
INSERT INTO tt_2 VALUES (USER(), 20);
INSERT INTO nt_1 VALUES (USER(), 21);
INSERT INTO tt_2 VALUES (USER(), 22);
ROLLBACK;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.nt_1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.tt_2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
###################################################################################
# CLEAN
###################################################################################
DROP TABLE tt_1;
DROP TABLE tt_2;
DROP TABLE nt_1;
DROP TABLE nt_2;

View File

@ -9,7 +9,7 @@ drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 1
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@ -18,7 +18,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1

View File

@ -11,7 +11,7 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
select * from t1;
a
1

View File

@ -1,3 +1,4 @@
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
drop table if exists t1, t2;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
@ -9,10 +10,12 @@ commit;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Xid # # COMMIT /* XID */
delete from t1;
delete from t2;
@ -26,11 +29,9 @@ Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
delete from t1;
delete from t2;
reset master;
@ -46,13 +47,15 @@ commit;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; rollback to savepoint my_savepoint
master-bin.000001 # Xid # # COMMIT /* XID */
delete from t1;
@ -75,13 +78,15 @@ a
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; savepoint my_savepoint
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # use `test`; rollback to savepoint my_savepoint
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
@ -101,11 +106,9 @@ get_lock("a",10)
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
delete from t1;
delete from t2;
reset master;
@ -389,9 +392,7 @@ master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
@ -432,19 +433,8 @@ select get_lock("a",10);
get_lock("a",10)
1
flush logs;
select
(@a:=load_file("MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
is not null;
(@a:=load_file("MYSQLTEST_VARDIR/tmp/mix_innodb_myisam_binlog.output"))
is not null
1
select
@a like "%#%error_code=0%ROLLBACK\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" OR
@a like "%#%error_code=0%ROLLBACK\r\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%",
@a not like "%#%error_code=%error_code=%";
@a like "%#%error_code=0%ROLLBACK\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" OR
@a like "%#%error_code=0%ROLLBACK\r\n/*!*/;%ROLLBACK /* added by mysqlbinlog */;%" @a not like "%#%error_code=%error_code=%"
1 1
This does not matter in ROW mode as the rolled back changes do not contain transactional changes as these
were previously flushed upon committing/rolling back each statement.
drop table t1, t2;
create temporary table tt (a int unique);
create table ti (a int) engine=innodb;
@ -461,12 +451,6 @@ count(*)
2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.ti)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.ti)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
select count(*) from ti /* zero */;
count(*)
0
@ -484,6 +468,8 @@ insert into ti values (2) /* to make the dup error in the following */;
insert into tt select * from ti /* one affected and error */;
ERROR 23000: Duplicate entry '2' for key 'a'
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
select count(*) from ti /* zero */;
@ -517,7 +503,7 @@ master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
/* only (!) with fixes for #23333 will show there is the query */;
select count(*) from t1 /* must be 3 */;
count(*)
@ -559,10 +545,9 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 1 */;
count(*)
@ -576,11 +561,9 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 2 */;
count(*)
@ -598,7 +581,7 @@ master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Update_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 2 */;
count(*)
@ -613,10 +596,9 @@ ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t4)
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 4 */;
count(*)
@ -646,11 +628,10 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Table_map # # table_id: # (test.t3)
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 1 */;
count(*)
@ -669,12 +650,9 @@ ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t2)
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Delete_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 1 */;
count(*)
@ -694,12 +672,9 @@ count(*)
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t4)
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: #
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
drop trigger trg_del_t2;
drop table t1,t2,t3,t4,t5;
@ -720,12 +695,6 @@ count(*)
2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.ti)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Table_map # # table_id: # (test.ti)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
master-bin.000001 # Query # # ROLLBACK
select count(*) from ti /* zero */;
count(*)
0
@ -743,6 +712,8 @@ insert into ti values (2) /* to make the dup error in the following */;
insert into tt select * from ti /* one affected and error */;
ERROR 23000: Duplicate entry '2' for key 'a'
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
select count(*) from ti /* zero */;
@ -772,8 +743,10 @@ insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=3
master-bin.000001 # Query # # use `test`; insert into t2 values (bug27417(2))
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 3 */;
count(*)
3
@ -787,8 +760,10 @@ count(*)
2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; delete from t2 where a=bug27417(3)
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 5 */;
count(*)
5
@ -809,10 +784,6 @@ insert into t2 values (bug27417(1));
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=1
master-bin.000001 # Query # # use `test`; insert into t2 values (bug27417(1))
master-bin.000001 # Query # # ROLLBACK
select count(*) from t1 /* must be 1 */;
count(*)
1
@ -824,10 +795,6 @@ insert into t2 select bug27417(1) union select bug27417(2);
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=2
master-bin.000001 # Query # # use `test`; insert into t2 select bug27417(1) union select bug27417(2)
master-bin.000001 # Query # # ROLLBACK
select count(*) from t1 /* must be 2 */;
count(*)
2
@ -838,8 +805,10 @@ update t3 set b=b+bug27417(1);
ERROR 23000: Duplicate entry '4' for key 'b'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; update t3 set b=b+bug27417(1)
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 2 */;
count(*)
2
@ -852,10 +821,6 @@ UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */;
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=6
master-bin.000001 # Query # # use `test`; UPDATE t4,t3 SET t4.a=t3.a + bug27417(1) /* top level non-ta table */
master-bin.000001 # Query # # ROLLBACK
select count(*) from t1 /* must be 4 */;
count(*)
4
@ -883,10 +848,6 @@ delete from t2;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=9
master-bin.000001 # Query # # use `test`; delete from t2
master-bin.000001 # Query # # ROLLBACK
select count(*) from t1 /* must be 1 */;
count(*)
1
@ -903,9 +864,6 @@ delete t2.* from t2,t5 where t2.a=t5.a + 1;
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; delete t2.* from t2,t5 where t2.a=t5.a + 1
master-bin.000001 # Query # # ROLLBACK
select count(*) from t1 /* must be 1 */;
count(*)
1
@ -923,14 +881,6 @@ count(*)
2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=10
master-bin.000001 # User var # # @`b`=_latin1 0x3135 COLLATE latin1_swedish_ci
master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=#
master-bin.000001 # Intvar # # INSERT_ID=10
master-bin.000001 # User var # # @`b`=_latin1 0x3135 COLLATE latin1_swedish_ci
master-bin.000001 # Execute_load_query # # use `test`; LOAD DATA INFILE '../../std_data/rpl_loaddata.dat' INTO TABLE `t4` FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n' (a, @b) SET b=((@b) + `bug27417`(2)) ;file_id=#
master-bin.000001 # Query # # ROLLBACK
drop trigger trg_del_t2;
drop table t1,t2,t3,t4,t5;
drop function bug27417;

View File

@ -5,14 +5,27 @@ insert delayed into t1 values (300);
FLUSH TABLES;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mtr`; INSERT INTO test_suppressions (pattern) VALUES ( NAME_CONST('pattern',_latin1'Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT' COLLATE 'latin1_swedish_ci'))
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (207)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=208
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (null)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert delayed into t1 values (300)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; FLUSH TABLES
insert delayed into t1 values (null),(null),(null),(null);
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
insert delayed into t1 values (null),(null),(400),(null);
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses INSERT DELAYED. This is unsafe because the time when rows are inserted cannot be predicted.
select * from t1;
a
207

View File

@ -592,8 +592,10 @@ show binlog events from 0;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 4 Format_desc 1 107 Server version, Binlog ver: 4
master-bin.000001 107 Query 1 228 use `test`; create table t1 (a bigint unsigned, b bigint(20) unsigned)
master-bin.000001 228 Query 1 352 use `test`; insert into t1 values (9999999999999999,14632475938453979136)
master-bin.000001 352 Query 1 428 use `test`; drop table t1
master-bin.000001 228 Query 1 296 BEGIN
master-bin.000001 296 Query 1 420 use `test`; insert into t1 values (9999999999999999,14632475938453979136)
master-bin.000001 420 Query 1 489 COMMIT
master-bin.000001 489 Query 1 565 use `test`; drop table t1
reset master;
CREATE DATABASE bug39182 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE bug39182;
@ -699,16 +701,24 @@ use test;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=127
master-bin.000001 # Query # # use `test`; insert into t1 values(null)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table t1
master-bin.000001 # Query # # use `test`; create table t1 (a int)
master-bin.000001 # Query # # use `test`; create table if not exists t2 select * from t1
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query # # use `test`; create table if not exists t3 like tt1
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
master-bin.000001 # Query # # COMMIT
drop table t1,t2,t3,tt1;
create table t1 (a int not null auto_increment, primary key (a)) engine=myisam;
insert delayed into t1 values (207);
@ -718,16 +728,24 @@ FLUSH TABLES;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=127
master-bin.000001 # Query # # use `test`; insert into t1 values(null)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table t1
master-bin.000001 # Query # # use `test`; create table t1 (a int)
master-bin.000001 # Query # # use `test`; create table if not exists t2 select * from t1
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
master-bin.000001 # Query # # use `test`; create table if not exists t3 like tt1
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; INSERT INTO user SET host='localhost', user='@#@', password=password('Just a test')
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; UPDATE user SET password=password('Another password') WHERE host='localhost' AND user='@#@'
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@'
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table t1,t2,t3,tt1
master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam
master-bin.000001 # Query # # BEGIN
@ -799,7 +817,9 @@ SHOW BINLOG EVENTS;
Log_name Pos Event_type Server_id End_log_pos Info
# # Format_desc 1 # Server ver: #, Binlog ver: #
# # Query 1 # use `test`; CREATE TABLE t1 (a INT PRIMARY KEY)
# # Query 1 # BEGIN
# # Query 1 # use `test`; INSERT INTO t1 VALUES (1)
# # Query 1 # COMMIT
# # Query 1 # BEGIN
# # Table_map 1 # table_id: # (test.t1)
# # Write_rows 1 # table_id: # flags: STMT_END_F

View File

@ -1,3 +1,4 @@
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
drop table if exists t1,t2;
CREATE TABLE t1 (
Period smallint(4) unsigned zerofill DEFAULT '0000' NOT NULL,

View File

@ -5,15 +5,15 @@ reset master;
insert into t2 values (@v);
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # User var # # @`v`=_ucs2 0x006100620063 COLLATE ucs2_general_ci
master-bin.000001 # Query # # use `test`; insert into t2 values (@v)
master-bin.000001 # Query # # COMMIT
flush logs;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
ROLLBACK/*!*/;
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`/*!*/;
use test/*!*/;
SET TIMESTAMP=10000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
@ -23,8 +23,16 @@ SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
SET @`v`:=_ucs2 0x006100620063 COLLATE `ucs2_general_ci`/*!*/;
use test/*!*/;
SET TIMESTAMP=10000/*!*/;
insert into t2 values (@v)
/*!*/;
SET TIMESTAMP=10000/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;

View File

@ -25,11 +25,11 @@ use b42829;
### binlog-do-db is not filtering used database
BEGIN;
INSERT INTO t2 VALUES (1,2), (1,3), (1,4);
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
UPDATE b42829_filtered.t1 ft1, b42829.t1 nft1 SET ft1.x=1, nft1.x=2;
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
INSERT INTO t1 SELECT * FROM t2;
ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'
ERROR HY000: Cannot execute statement: binlogging impossible since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-logging. InnoDB is limited to row-logging when transaction isolation level is READ COMMITTED or READ UNCOMMITTED.
COMMIT;
### assertion: filtered events did not make into the binlog
show binlog events from <binlog_start>;

View File

@ -9,7 +9,7 @@ drop table if exists t1;
create table t1 (a int) engine=innodb;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 1
Binlog_cache_use 2
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1
@ -18,7 +18,7 @@ delete from t1;
commit;
show status like "binlog_cache_use";
Variable_name Value
Binlog_cache_use 2
Binlog_cache_use 4
show status like "binlog_cache_disk_use";
Variable_name Value
Binlog_cache_disk_use 1

View File

@ -8,7 +8,9 @@ insert into t1 select * from t2;
ERROR 23000: Duplicate entry '2' for key 'a'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 select * from t2
master-bin.000001 # Query # # COMMIT
select * from t1;
a
1

View File

@ -1,4 +1,5 @@
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
drop table if exists t1, t2;
create table t1 (a int) engine=innodb;
create table t2 (a int) engine=myisam;
@ -6,6 +7,8 @@ reset master;
begin;
insert into t1 values(1);
insert into t2 select * from t1;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
commit;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
@ -19,6 +22,8 @@ reset master;
begin;
insert into t1 values(2);
insert into t2 select * from t1;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@ -36,6 +41,8 @@ insert into t1 values(3);
savepoint my_savepoint;
insert into t1 values(4);
insert into t2 select * from t1;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback to savepoint my_savepoint;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@ -57,6 +64,8 @@ insert into t1 values(5);
savepoint my_savepoint;
insert into t1 values(6);
insert into t2 select * from t1;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback to savepoint my_savepoint;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@ -85,6 +94,8 @@ get_lock("a",10)
begin;
insert into t1 values(8);
insert into t2 select * from t1;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select get_lock("a",10);
get_lock("a",10)
1
@ -99,24 +110,32 @@ delete from t2;
reset master;
insert into t1 values(9);
insert into t2 select * from t1;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values(9)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
master-bin.000001 # Query # # COMMIT
delete from t1;
delete from t2;
reset master;
insert into t1 values(10);
begin;
insert into t2 select * from t1;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values(10)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
master-bin.000001 # Query # # COMMIT
insert into t1 values(11);
commit;
show binlog events from <binlog_start>;
@ -124,7 +143,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values(10)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 select * from t1
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values(11)
master-bin.000001 # Xid # # COMMIT /* XID */
@ -226,7 +247,7 @@ insert t0 select * from t1;
set autocommit=1;
insert into t0 select GET_LOCK("lock1",null);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
set autocommit=0;
create table t2 (n int) engine=innodb;
insert into t2 values (3);
@ -249,17 +270,29 @@ master-bin.000001 # Query # # use `test`; alter table t2 engine=MyISAM
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t2 values (20)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; drop table t1,t2
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; create temporary table ti (a int) engine=innodb
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into ti values(1)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; create temporary table t1 (a int) engine=myisam
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert t1 values (1)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; create table t0 (n int)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert t0 select * from t1
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t0 select GET_LOCK("lock1",null)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; create table t2 (n int) engine=innodb
master-bin.000001 # Query # # use `test`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `t1`,`ti`
do release_lock("lock1");
@ -343,24 +376,42 @@ a b
DROP TABLE t1,t2;
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (1,1),(1,2)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE if exists t2
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (3,3)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t2
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4,4)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (4,4)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
master-bin.000001 # Xid # # COMMIT /* XID */
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (5,5)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; DROP TABLE t2
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (6,6)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)) engine=innodb
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (7,7)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (8,8)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (9,9)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # use `test`; TRUNCATE table t2
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 values (10,10)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 values (100,100)
master-bin.000001 # Query # # COMMIT
@ -374,6 +425,8 @@ get_lock("a",10)
begin;
insert into t1 values(8);
insert into t2 select * from t1;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select get_lock("a",10);
get_lock("a",10)
1
@ -399,6 +452,8 @@ begin;
insert into ti values (1);
insert into ti values (2) ;
insert into tt select * from ti;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@ -416,6 +471,8 @@ select count(*) from ti /* zero */;
count(*)
0
insert into ti select * from tt;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select * from ti /* that is what slave would miss - a bug */;
a
1
@ -442,6 +499,8 @@ select count(*) from ti /* zero */;
count(*)
0
insert into ti select * from tt;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select * from tt /* that is what otherwise slave missed - the bug */;
a
1
@ -460,17 +519,19 @@ end|
reset master;
insert into t2 values (bug27417(1));
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
insert into t2 select bug27417(2);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
reset master;
insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=3
master-bin.000001 # Query # # use `test`; insert into t2 values (bug27417(2))
master-bin.000001 # Query # # COMMIT
/* only (!) with fixes for #23333 will show there is the query */;
select count(*) from t1 /* must be 3 */;
count(*)
@ -481,14 +542,16 @@ count(*)
2
delete from t2 where a=bug27417(3);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
select count(*) from t2 /* nothing got deleted */;
count(*)
2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; delete from t2 where a=bug27417(3)
master-bin.000001 # Query # # COMMIT
/* the query must be in regardless of #23333 */;
select count(*) from t1 /* must be 5 */;
count(*)
@ -496,7 +559,7 @@ count(*)
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
select count(*) from t1 /* must be 7 */;
count(*)
7
@ -543,8 +606,10 @@ update t3 set b=b+bug27417(1);
ERROR 23000: Duplicate entry '4' for key 'b'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; update t3 set b=b+bug27417(1)
master-bin.000001 # Query # # COMMIT
/* the output must denote there is the query */;
select count(*) from t1 /* must be 2 */;
count(*)
@ -651,6 +716,8 @@ begin;
insert into ti values (1);
insert into ti values (2) ;
insert into tt select * from ti;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
rollback;
Warnings:
Warning 1196 Some non-transactional changed tables couldn't be rolled back
@ -668,6 +735,8 @@ select count(*) from ti /* zero */;
count(*)
0
insert into ti select * from tt;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select * from ti /* that is what slave would miss - bug#28960 */;
a
1
@ -694,6 +763,8 @@ select count(*) from ti /* zero */;
count(*)
0
insert into ti select * from tt;
Warnings:
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction.
select * from tt /* that is what otherwise slave missed - the bug */;
a
1
@ -712,17 +783,19 @@ end|
reset master;
insert into t2 values (bug27417(1));
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
insert into t2 select bug27417(2);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
reset master;
insert into t2 values (bug27417(2));
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=3
master-bin.000001 # Query # # use `test`; insert into t2 values (bug27417(2))
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 3 */;
count(*)
3
@ -732,21 +805,23 @@ count(*)
2
delete from t2 where a=bug27417(3);
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
select count(*) from t2 /* nothing got deleted */;
count(*)
2
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; delete from t2 where a=bug27417(3)
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 5 */;
count(*)
5
delete t2 from t2 where t2.a=bug27417(100) /* must not affect t2 */;
affected rows: 0
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement updates two AUTO_INCREMENT columns. This is unsafe because the generated value cannot be predicted by slave.
select count(*) from t1 /* must be 7 */;
count(*)
7
@ -791,8 +866,10 @@ update t3 set b=b+bug27417(1);
ERROR 23000: Duplicate entry '4' for key 'b'
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Intvar # # INSERT_ID=4
master-bin.000001 # Query # # use `test`; update t3 set b=b+bug27417(1)
master-bin.000001 # Query # # COMMIT
select count(*) from t1 /* must be 2 */;
count(*)
2

View File

@ -11,12 +11,18 @@ prepare s from "insert into t1 select 100 limit ?";
set @a=100;
execute s using @a;
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; create table t1 (a int)
master-bin.000001 # Query # # BEGIN
master-bin.000001 # User var # # @`a`=98
master-bin.000001 # Query # # use `test`; insert into t1 values (@a),(98)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 values (99)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; insert into t1 select 100 limit 100
master-bin.000001 # Query # # COMMIT
drop table t1;

View File

@ -1,4 +1,4 @@
CALL mtr.add_suppression("Statement may not be safe to log in statement format.");
CALL mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT");
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
set @saved_global_binlog_format = @@global.binlog_format;
@ -31,7 +31,7 @@ RELEASE_LOCK('Bug#34306')
1
# con2
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
SELECT RELEASE_LOCK('Bug#34306');
RELEASE_LOCK('Bug#34306')
1
@ -63,11 +63,21 @@ master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t1
master-bin.000001 # Query # # use `test`; DROP TABLE IF EXISTS t2
master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT)
master-bin.000001 # Query # # use `test`; CREATE TABLE t2 LIKE t1
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES(1)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES(2)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2 WHERE GET_LOCK('Bug#34306', 120)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (3)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES (4)
master-bin.000001 # Query # # COMMIT
master-bin.000001 # Query # # BEGIN
master-bin.000001 # Table_map # # table_id: # (test.t1)
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F

View File

@ -1,13 +1,15 @@
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted. .*");
call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave. .*");
### NOT filtered database => assertion: warnings ARE shown
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a int, b int, primary key (a));
INSERT INTO t1 VALUES (1,2), (2,3);
UPDATE t1 SET b='4' WHERE a=1 LIMIT 1;
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
UPDATE t1 SET b='5' WHERE a=2 ORDER BY a LIMIT 1;
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a LIMIT clause. This is unsafe because the set of rows included cannot be predicted.
DROP TABLE t1;
### NOT filtered database => assertion: binlog disabled and warnings ARE NOT shown
SET SQL_LOG_BIN= 0;
@ -38,11 +40,11 @@ CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(10));
SET GLOBAL LOG_WARNINGS = 0;
INSERT INTO t1 VALUES(UUID(), 'Bug#46265');
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
SET GLOBAL LOG_WARNINGS = 1;
INSERT INTO t1 VALUES(UUID(), 'Bug#46265');
Warnings:
Note 1592 Statement may not be safe to log in statement format.
Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Statement uses a system function whose value may differ on slave.
DROP TABLE t1;
SET GLOBAL log_warnings = @old_log_warnings;
# Count the number of times the "Unsafe" message was printed

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More