mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
5.2->5.3 merge
This commit is contained in:
commit
4f67a14700
104 changed files with 1753 additions and 1126 deletions
14
configure.in
14
configure.in
|
@ -13,7 +13,7 @@ dnl When changing the major version number please also check the switch
|
|||
dnl statement in mysqlbinlog::check_master_version(). You may also need
|
||||
dnl to update version.c in ndb.
|
||||
|
||||
AC_INIT([MariaDB Server], [5.3.11-MariaDB], [], [mysql])
|
||||
AC_INIT([MariaDB Server], [5.3.12-MariaDB], [], [mysql])
|
||||
|
||||
AC_CONFIG_SRCDIR([sql/mysqld.cc])
|
||||
AC_CANONICAL_SYSTEM
|
||||
|
@ -2514,6 +2514,18 @@ if test "x$mysql_cv_bss_start" = xyes; then
|
|||
[Define to 1 if compiler defines __bss_start.])
|
||||
fi
|
||||
|
||||
# check for -fvisibility=hidden compiler support (GCC >= 4)
|
||||
saved_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
|
||||
AC_MSG_CHECKING([if ${CXX} supports -fvisibility=hidden -fvisibility-inlines-hidden])
|
||||
AC_COMPILE_IFELSE([char foo;],
|
||||
[ AC_MSG_RESULT([yes])
|
||||
SYMBOL_VISIBILITY="-fvisibility=hidden" SYMBOL_VISIBILITY_INLINES="-fvisibility-inlines-hidden" ],
|
||||
AC_MSG_RESULT([no]))
|
||||
CFLAGS="$saved_CFLAGS"
|
||||
AC_SUBST(SYMBOL_VISIBILITY)
|
||||
AC_SUBST(SYMBOL_VISIBILITY_INLINES)
|
||||
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
AC_CHECK_HEADERS(cxxabi.h)
|
||||
|
|
|
@ -5,4 +5,5 @@ libyassl_la_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \
|
|||
handshake.cpp lock.cpp log.cpp socket_wrapper.cpp ssl.cpp \
|
||||
template_instnt.cpp timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp
|
||||
EXTRA_DIST = $(wildcard ../include/*.hpp) $(wildcard ../include/openssl/*.h)
|
||||
AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX @yassl_thread_cxxflags@
|
||||
AM_CXXFLAGS = -DYASSL_PURE_C -DYASSL_PREFIX @yassl_thread_cxxflags@ \
|
||||
@SYMBOL_VISIBILITY@ @SYMBOL_VISIBILITY_INLINES@
|
||||
|
|
|
@ -9,6 +9,7 @@ libtaocrypt_la_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp \
|
|||
tftables.cpp twofish.cpp rabbit.cpp hc128.cpp
|
||||
|
||||
libtaocrypt_la_CXXFLAGS = @yassl_taocrypt_extra_cxxflags@ -DYASSL_PURE_C \
|
||||
@yassl_thread_cxxflags@
|
||||
|
||||
@yassl_thread_cxxflags@ \
|
||||
@SYMBOL_VISIBILITY@ @SYMBOL_VISIBILITY_INLINES@
|
||||
|
||||
EXTRA_DIST = $(wildcard ../include/*.hpp)
|
||||
|
|
|
@ -191,6 +191,32 @@ t1 CREATE TABLE `t1` (
|
|||
`r` varchar(10) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #51876 : crash/memory underrun when loading data with ucs2
|
||||
# and reverse() function
|
||||
#
|
||||
# Problem # 1 (original report): wrong parsing of ucs2 data
|
||||
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
|
||||
CREATE TABLE t1(a INT);
|
||||
LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
(@b) SET a=REVERSE(@b);
|
||||
# should return 2 zeroes (as the value is truncated)
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
0
|
||||
1
|
||||
DROP TABLE t1;
|
||||
# Problem # 2 : if you write and read ucs2 data to a file they're lost
|
||||
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
|
||||
CREATE TABLE t1(a INT);
|
||||
LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
(@b) SET a=REVERSE(@b);
|
||||
# should return 0 and 1 (10 reversed)
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
0
|
||||
1
|
||||
DROP TABLE t1;
|
||||
create table t2(f1 Char(30));
|
||||
insert into t2 values ("103000"), ("22720000"), ("3401200"), ("78000");
|
||||
select lpad(f1, 12, "-o-/") from t2;
|
||||
|
|
20
mysql-test/r/grant_lowercase.result
Normal file
20
mysql-test/r/grant_lowercase.result
Normal file
|
@ -0,0 +1,20 @@
|
|||
grant file on *.* to user1@localhost with grant option;
|
||||
grant select on `a%`.* to user1@localhost with grant option;
|
||||
grant file on aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.* to 'user'@'%' identified by 'secret';
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
drop user user1@localhost;
|
||||
call mtr.add_suppression("Incorrect database name");
|
||||
alter table mysql.host modify Db varchar(200);
|
||||
alter table mysql.db modify Db varchar(200);
|
||||
insert mysql.host set db=concat('=>', repeat(_utf8 'й', 200));
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'Db' at row 1
|
||||
insert mysql.db set db=concat('=>', repeat(_utf8 'й', 200));
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'Db' at row 1
|
||||
flush privileges;
|
||||
delete from mysql.host where db like '=>%';
|
||||
delete from mysql.db where db like '=>%';
|
||||
alter table mysql.host modify Db char(64);
|
||||
alter table mysql.db modify Db char(64);
|
||||
flush privileges;
|
|
@ -504,35 +504,6 @@ CREATE TABLE t1 (id INT NOT NULL);
|
|||
LOAD DATA LOCAL INFILE 'tb.txt' INTO TABLE t1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug #51876 : crash/memory underrun when loading data with ucs2
|
||||
# and reverse() function
|
||||
#
|
||||
# Problem # 1 (original report): wrong parsing of ucs2 data
|
||||
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
|
||||
CREATE TABLE t1(a INT);
|
||||
LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
(@b) SET a=REVERSE(@b);
|
||||
Warnings:
|
||||
Warning 1366 Incorrect integer value: '00' for column 'a' at row 1
|
||||
Warning 1366 Incorrect integer value: '10' for column 'a' at row 2
|
||||
# should return 2 zeroes (as the value is truncated)
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
# Problem # 2 : if you write and read ucs2 data to a file they're lost
|
||||
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
|
||||
CREATE TABLE t1(a INT);
|
||||
LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
(@b) SET a=REVERSE(@b);
|
||||
# should return 0 and 1 (10 reversed)
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
0
|
||||
1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#11765139 58069: LOAD DATA INFILE: VALGRIND REPORTS INVALID MEMORY READS AND WRITES WITH U
|
||||
#
|
||||
CREATE TABLE t1(f1 INT);
|
||||
|
|
|
@ -311,5 +311,9 @@ SHOW TABLES IN connected_db;
|
|||
Tables_in_connected_db
|
||||
table_in_connected_db
|
||||
DROP DATABASE connected_db;
|
||||
create database `aa``bb````cc`;
|
||||
DATABASE()
|
||||
aa`bb``cc
|
||||
drop database `aa``bb````cc`;
|
||||
|
||||
End of tests
|
||||
|
|
|
@ -198,7 +198,6 @@ CREATE PROCEDURE p1(i INT) BEGIN END;
|
|||
DROP PROCEDURE p1;
|
||||
DELETE FROM mysql.user WHERE User='mysqltest_1';
|
||||
FLUSH PRIVILEGES;
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
#
|
||||
# Bug#44521 Prepared Statement: CALL p() - crashes: `! thd->main_da.is_sent' failed et.al.
|
||||
#
|
||||
|
@ -252,3 +251,4 @@ DROP EVENT teste_bug11763507;
|
|||
# ------------------------------------------------------------------
|
||||
# -- End of 5.1 tests
|
||||
# ------------------------------------------------------------------
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -2363,7 +2363,7 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -2456,7 +2456,7 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -2551,7 +2551,7 @@ BEGIN
|
|||
#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 #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
|
||||
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
|
||||
|
@ -2632,7 +2632,7 @@ BEGIN
|
|||
### @77=NULL /* TIMESTAMP meta=63233 nullable=1 is_null=1 */
|
||||
### @78=NULL /* TIMESTAMP meta=63489 nullable=1 is_null=1 */
|
||||
### @79=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -2725,7 +2725,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -2898,7 +2898,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3071,7 +3071,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
|
||||
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
|
||||
|
@ -3244,7 +3244,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3417,7 +3417,7 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3510,7 +3510,7 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3603,7 +3603,7 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3696,7 +3696,7 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
|
||||
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
|
||||
|
@ -3901,47 +3901,47 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-04' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-05' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-06' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-07' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:08' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-08' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=8 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:09' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-09' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -3958,7 +3958,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -3967,7 +3967,7 @@ BEGIN
|
|||
### @1='2008:08:11' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -3976,7 +3976,7 @@ BEGIN
|
|||
### @1='2008:08:12' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -3985,7 +3985,7 @@ BEGIN
|
|||
### @1='2008:08:13' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-04' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -3994,7 +3994,7 @@ BEGIN
|
|||
### @1='2008:08:14' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-04' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-05' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4003,7 +4003,7 @@ BEGIN
|
|||
### @1='2008:08:15' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-05' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-06' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4012,7 +4012,7 @@ BEGIN
|
|||
### @1='2008:08:16' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-06' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-07' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4033,37 +4033,37 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:11' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:12' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:13' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:14' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-04' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:15' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-05' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:16' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-06' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:17' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-07' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4286,47 +4286,47 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-01' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=11 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:08' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-08' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=18 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:09' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-09' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4343,47 +4343,47 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-01' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=21 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:08' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-08' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=28 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:09' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-09' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4400,47 +4400,47 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-01' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=31 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:08' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-08' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=38 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:09' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-09' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4465,7 +4465,7 @@ BEGIN
|
|||
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4474,7 +4474,7 @@ BEGIN
|
|||
### @1='2018:01:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4483,7 +4483,7 @@ BEGIN
|
|||
### @1='2018:01:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4492,7 +4492,7 @@ BEGIN
|
|||
### @1='2018:01:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4501,7 +4501,7 @@ BEGIN
|
|||
### @1='2018:01:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4510,7 +4510,7 @@ BEGIN
|
|||
### @1='2018:01:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4519,7 +4519,7 @@ BEGIN
|
|||
### @1='2018:01:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4528,7 +4528,7 @@ BEGIN
|
|||
### @1='2028:02:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4537,7 +4537,7 @@ BEGIN
|
|||
### @1='2028:02:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4546,7 +4546,7 @@ BEGIN
|
|||
### @1='2028:02:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4555,7 +4555,7 @@ BEGIN
|
|||
### @1='2028:02:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4564,7 +4564,7 @@ BEGIN
|
|||
### @1='2028:02:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4573,7 +4573,7 @@ BEGIN
|
|||
### @1='2028:02:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4582,7 +4582,7 @@ BEGIN
|
|||
### @1='2038:03:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4591,7 +4591,7 @@ BEGIN
|
|||
### @1='2038:03:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4600,7 +4600,7 @@ BEGIN
|
|||
### @1='2038:03:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4609,7 +4609,7 @@ BEGIN
|
|||
### @1='2038:03:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4618,7 +4618,7 @@ BEGIN
|
|||
### @1='2038:03:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4647,92 +4647,92 @@ BEGIN
|
|||
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4829,17 +4829,17 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @3='Wow' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @3='Wow' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=6 /* INT meta=0 nullable=1 is_null=0 */
|
|
@ -2363,7 +2363,7 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -2458,7 +2458,7 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -2555,7 +2555,7 @@ BEGIN
|
|||
#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 #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
|
||||
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
|
||||
|
@ -2636,7 +2636,7 @@ BEGIN
|
|||
### @77=NULL /* TIMESTAMP meta=63233 nullable=1 is_null=1 */
|
||||
### @78=NULL /* TIMESTAMP meta=63489 nullable=1 is_null=1 */
|
||||
### @79=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -2731,7 +2731,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -2906,7 +2906,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3081,7 +3081,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
|
||||
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
|
||||
|
@ -3256,7 +3256,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3431,7 +3431,7 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3526,7 +3526,7 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'0' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'0000000000000000000000000000000000000000000000000000000000000000' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3621,7 +3621,7 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=b'1' /* BIT(1) meta=1 nullable=1 is_null=0 */
|
||||
### @2=b'1111111111111111111111111111111111111111111111111111111111111111' /* BIT(64) meta=2048 nullable=1 is_null=0 */
|
||||
|
@ -3716,7 +3716,7 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1=NULL /* type=16 meta=1 nullable=1 is_null=1 */
|
||||
### @2=NULL /* type=16 meta=2048 nullable=1 is_null=1 */
|
||||
|
@ -3923,47 +3923,47 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-04' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-05' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-06' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-07' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:08' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-08' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=8 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:08:09' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-09' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -3982,7 +3982,7 @@ BEGIN
|
|||
# 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
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -3991,7 +3991,7 @@ BEGIN
|
|||
### @1='2008:08:11' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4000,7 +4000,7 @@ BEGIN
|
|||
### @1='2008:08:12' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4009,7 +4009,7 @@ BEGIN
|
|||
### @1='2008:08:13' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-04' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4018,7 +4018,7 @@ BEGIN
|
|||
### @1='2008:08:14' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-04' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-05' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4027,7 +4027,7 @@ BEGIN
|
|||
### @1='2008:08:15' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-05' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-06' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4036,7 +4036,7 @@ BEGIN
|
|||
### @1='2008:08:16' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-06' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-07' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4059,37 +4059,37 @@ BEGIN
|
|||
# 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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:11' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:12' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:13' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:14' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-04' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:15' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-05' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:16' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-06' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:08:17' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-07' /* VARSTRING(24) meta=24 nullable=1 is_null=0 */
|
||||
|
@ -4314,47 +4314,47 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-01' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=11 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:08' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-08' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=18 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1='2008:01:09' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-09' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4373,47 +4373,47 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-01' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=21 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:08' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-08' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=28 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t2
|
||||
### INSERT INTO `test`.`t2`
|
||||
### SET
|
||||
### @1='2008:02:09' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-09' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4432,47 +4432,47 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Table_map: `test`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-01' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=31 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:08' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-08' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=38 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t3
|
||||
### INSERT INTO `test`.`t3`
|
||||
### SET
|
||||
### @1='2008:03:09' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-09' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4499,7 +4499,7 @@ BEGIN
|
|||
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Update_rows: table id # flags: STMT_END_F
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4508,7 +4508,7 @@ BEGIN
|
|||
### @1='2018:01:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4517,7 +4517,7 @@ BEGIN
|
|||
### @1='2018:01:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4526,7 +4526,7 @@ BEGIN
|
|||
### @1='2018:01:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4535,7 +4535,7 @@ BEGIN
|
|||
### @1='2018:01:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4544,7 +4544,7 @@ BEGIN
|
|||
### @1='2018:01:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t1
|
||||
### UPDATE `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2008:01:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4553,7 +4553,7 @@ BEGIN
|
|||
### @1='2018:01:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4562,7 +4562,7 @@ BEGIN
|
|||
### @1='2028:02:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4571,7 +4571,7 @@ BEGIN
|
|||
### @1='2028:02:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4580,7 +4580,7 @@ BEGIN
|
|||
### @1='2028:02:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4589,7 +4589,7 @@ BEGIN
|
|||
### @1='2028:02:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4598,7 +4598,7 @@ BEGIN
|
|||
### @1='2028:02:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t2
|
||||
### UPDATE `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2008:02:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4607,7 +4607,7 @@ BEGIN
|
|||
### @1='2028:02:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4616,7 +4616,7 @@ BEGIN
|
|||
### @1='2038:03:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4625,7 +4625,7 @@ BEGIN
|
|||
### @1='2038:03:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4634,7 +4634,7 @@ BEGIN
|
|||
### @1='2038:03:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4643,7 +4643,7 @@ BEGIN
|
|||
### @1='2038:03:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4652,7 +4652,7 @@ BEGIN
|
|||
### @1='2038:03:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### UPDATE test.t3
|
||||
### UPDATE `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2008:03:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4683,92 +4683,92 @@ BEGIN
|
|||
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t1
|
||||
### DELETE FROM `test`.`t1`
|
||||
### WHERE
|
||||
### @1='2018:01:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-01-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t2
|
||||
### DELETE FROM `test`.`t2`
|
||||
### WHERE
|
||||
### @1='2028:02:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-02-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=7 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:02' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-02' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:03' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-03' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-04' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:05' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-05' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:06' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-06' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
### @3=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test.t3
|
||||
### DELETE FROM `test`.`t3`
|
||||
### WHERE
|
||||
### @1='2038:03:07' /* DATE meta=0 nullable=1 is_null=0 */
|
||||
### @2='VARCHAR-03-07' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */
|
||||
|
@ -4867,17 +4867,17 @@ BEGIN
|
|||
# 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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @3='Wow' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @3='Wow' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
|
||||
### INSERT INTO test.t1
|
||||
### INSERT INTO `test`.`t1`
|
||||
### SET
|
||||
### @1=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=6 /* INT meta=0 nullable=1 is_null=0 */
|
|
@ -164,15 +164,15 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -180,21 +180,21 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -205,7 +205,7 @@ BEGIN
|
|||
# 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
|
||||
### 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 */
|
||||
|
@ -247,15 +247,15 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -263,21 +263,21 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -288,7 +288,7 @@ BEGIN
|
|||
# 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
|
||||
### 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 */
|
||||
|
@ -296,15 +296,15 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -312,21 +312,21 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -337,7 +337,7 @@ BEGIN
|
|||
# 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
|
||||
### 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 */
|
||||
|
@ -371,15 +371,15 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -387,21 +387,21 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -412,7 +412,7 @@ BEGIN
|
|||
# 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
|
||||
### 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 */
|
||||
|
@ -420,15 +420,15 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -436,21 +436,21 @@ BEGIN
|
|||
# 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
|
||||
### 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
|
||||
### 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
|
||||
### 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 */
|
||||
|
@ -461,7 +461,7 @@ BEGIN
|
|||
# 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
|
||||
### 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 */
|
|
@ -113,13 +113,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -139,13 +139,13 @@ BEGIN
|
|||
#Q> INSERT INTO test2.t2 VALUES (1), (2), (3)
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -165,13 +165,13 @@ BEGIN
|
|||
#Q> INSERT INTO test3.t3 VALUES (1), (2), (3)
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test3`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -197,22 +197,22 @@ BEGIN
|
|||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -232,13 +232,13 @@ BEGIN
|
|||
#Q> INSERT INTO test2.v2 VALUES (1), (2), (3)
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -260,13 +260,13 @@ BEGIN
|
|||
#Q> WHERE xtest1.xt1.a=test2.t2.a AND test2.t2.a=test3.t3
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -323,13 +323,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -379,13 +379,13 @@ BEGIN
|
|||
#Q> WHERE test1.t1.a=test2.t2.a AND test2.t2.a=test3.t3
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id #
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -483,13 +483,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -507,13 +507,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -531,13 +531,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test3`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -559,22 +559,22 @@ BEGIN
|
|||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -592,13 +592,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -616,13 +616,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -699,13 +699,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -725,13 +725,13 @@ BEGIN
|
|||
#Q> INSERT INTO test2.t2 VALUES (1), (2), (3)
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -751,13 +751,13 @@ BEGIN
|
|||
#Q> INSERT INTO test3.t3 VALUES (1), (2), (3)
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test3`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -783,22 +783,22 @@ BEGIN
|
|||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -818,13 +818,13 @@ BEGIN
|
|||
#Q> INSERT INTO test2.v2 VALUES (1), (2), (3)
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -846,13 +846,13 @@ BEGIN
|
|||
#Q> WHERE xtest1.xt1.a=test2.t2.a AND test2.t2.a=test3.t3
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -909,13 +909,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -965,13 +965,13 @@ BEGIN
|
|||
#Q> WHERE test1.t1.a=test2.t2.a AND test2.t2.a=test3.t3
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id #
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -1069,13 +1069,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test1.t1
|
||||
### INSERT INTO `test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -1092,13 +1092,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -1115,13 +1115,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test3`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test3.t3
|
||||
### INSERT INTO `test3`.`t3`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -1142,22 +1142,22 @@ BEGIN
|
|||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test1.t1
|
||||
### DELETE FROM `test1`.`t1`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -1174,13 +1174,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -1197,13 +1197,13 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### DELETE FROM test2.t2
|
||||
### DELETE FROM `test2`.`t2`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
|
|
@ -57,11 +57,11 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
|
@ -85,10 +85,10 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -105,7 +105,7 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM new_test1.t1
|
||||
### DELETE FROM `new_test1`.`t1`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
|
@ -129,10 +129,10 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test3`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO new_test3.t3
|
||||
### INSERT INTO `new_test3`.`t3`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test3.t3
|
||||
### INSERT INTO `new_test3`.`t3`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -149,7 +149,7 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
|
@ -167,23 +167,23 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
|
@ -201,7 +201,7 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test3`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM new_test3.t3
|
||||
### DELETE FROM `new_test3`.`t3`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -251,11 +251,11 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
|
@ -279,10 +279,10 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `test2`.`t2` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO test2.t2
|
||||
### INSERT INTO `test2`.`t2`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -299,7 +299,7 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM new_test1.t1
|
||||
### DELETE FROM `new_test1`.`t1`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
|
@ -323,10 +323,10 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test3`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO new_test3.t3
|
||||
### INSERT INTO `new_test3`.`t3`
|
||||
### SET
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test3.t3
|
||||
### INSERT INTO `new_test3`.`t3`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
@ -343,7 +343,7 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
|
@ -361,23 +361,23 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test1`.`t1` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=2 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=3 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=4 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=5 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### INSERT INTO new_test1.t1
|
||||
### INSERT INTO `new_test1`.`t1`
|
||||
### SET
|
||||
### @1=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
### @2=6 /* INT meta=0 nullable=1 is_null=0 */
|
||||
|
@ -395,7 +395,7 @@ BEGIN
|
|||
# at #
|
||||
#010909 4:46:40 server id # end_log_pos # Table_map: `new_test3`.`t3` mapped to number #
|
||||
#010909 4:46:40 server id # end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||
### DELETE FROM new_test3.t3
|
||||
### DELETE FROM `new_test3`.`t3`
|
||||
### WHERE
|
||||
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
|
||||
# at #
|
||||
|
|
|
@ -1,152 +1,152 @@
|
|||
Verbose statements from : write-partial-row.binlog
|
||||
select replace(txt,'\r', '') as stmt from raw_binlog_rows where txt like '###%';
|
||||
stmt
|
||||
### INSERT INTO mysql.ndb_apply_status
|
||||
### INSERT INTO `mysql`.`ndb_apply_status`
|
||||
### SET
|
||||
### @1=1
|
||||
### @2=25769803786
|
||||
### @3=''
|
||||
### @4=0
|
||||
### @5=0
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=3
|
||||
### @2=3
|
||||
### @3=3
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=1
|
||||
### @2=1
|
||||
### @3=1
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=2
|
||||
### @2=2
|
||||
### @3=2
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=4
|
||||
### @2=4
|
||||
### @3=4
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=4
|
||||
### @3=40
|
||||
### DELETE FROM test.ba
|
||||
### DELETE FROM `test`.`ba`
|
||||
### WHERE
|
||||
### @1=2
|
||||
drop table raw_binlog_rows;
|
||||
Verbose statements from : write-full-row.binlog
|
||||
select replace(txt,'\r', '') as stmt from raw_binlog_rows where txt like '###%';
|
||||
stmt
|
||||
### INSERT INTO mysql.ndb_apply_status
|
||||
### INSERT INTO `mysql`.`ndb_apply_status`
|
||||
### SET
|
||||
### @1=2
|
||||
### @2=25769803786
|
||||
### @3=''
|
||||
### @4=0
|
||||
### @5=0
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=3
|
||||
### @2=3
|
||||
### @3=3
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=1
|
||||
### @2=1
|
||||
### @3=1
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=2
|
||||
### @2=2
|
||||
### @3=2
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=4
|
||||
### @2=4
|
||||
### @3=4
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=4
|
||||
### @2=4
|
||||
### @3=40
|
||||
### DELETE FROM test.ba
|
||||
### DELETE FROM `test`.`ba`
|
||||
### WHERE
|
||||
### @1=2
|
||||
drop table raw_binlog_rows;
|
||||
Verbose statements from : update-partial-row.binlog
|
||||
select replace(txt,'\r', '') as stmt from raw_binlog_rows where txt like '###%';
|
||||
stmt
|
||||
### INSERT INTO mysql.ndb_apply_status
|
||||
### INSERT INTO `mysql`.`ndb_apply_status`
|
||||
### SET
|
||||
### @1=3
|
||||
### @2=25769803786
|
||||
### @3=''
|
||||
### @4=0
|
||||
### @5=0
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=3
|
||||
### @2=3
|
||||
### @3=3
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=1
|
||||
### @2=1
|
||||
### @3=1
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=2
|
||||
### @2=2
|
||||
### @3=2
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=4
|
||||
### @2=4
|
||||
### @3=4
|
||||
### UPDATE test.ba
|
||||
### UPDATE `test`.`ba`
|
||||
### WHERE
|
||||
### @1=4
|
||||
### @3=4
|
||||
### SET
|
||||
### @1=4
|
||||
### @3=40
|
||||
### DELETE FROM test.ba
|
||||
### DELETE FROM `test`.`ba`
|
||||
### WHERE
|
||||
### @1=2
|
||||
drop table raw_binlog_rows;
|
||||
Verbose statements from : update-full-row.binlog
|
||||
select replace(txt,'\r', '') as stmt from raw_binlog_rows where txt like '###%';
|
||||
stmt
|
||||
### INSERT INTO mysql.ndb_apply_status
|
||||
### INSERT INTO `mysql`.`ndb_apply_status`
|
||||
### SET
|
||||
### @1=4
|
||||
### @2=25769803786
|
||||
### @3=''
|
||||
### @4=0
|
||||
### @5=0
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=3
|
||||
### @2=3
|
||||
### @3=3
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=1
|
||||
### @2=1
|
||||
### @3=1
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=2
|
||||
### @2=2
|
||||
### @3=2
|
||||
### INSERT INTO test.ba
|
||||
### INSERT INTO `test`.`ba`
|
||||
### SET
|
||||
### @1=4
|
||||
### @2=4
|
||||
### @3=4
|
||||
### UPDATE test.ba
|
||||
### UPDATE `test`.`ba`
|
||||
### WHERE
|
||||
### @1=4
|
||||
### @2=4
|
||||
|
@ -155,7 +155,7 @@ stmt
|
|||
### @1=4
|
||||
### @2=4
|
||||
### @3=40
|
||||
### DELETE FROM test.ba
|
||||
### DELETE FROM `test`.`ba`
|
||||
### WHERE
|
||||
### @1=2
|
||||
drop table raw_binlog_rows;
|
||||
|
|
|
@ -20,5 +20,5 @@ let $engine_type=InnoDB;
|
|||
--source include/have_binlog_format_row.inc
|
||||
--source include/have_ucs2.inc
|
||||
|
||||
--source include/mysqlbinlog_row_engine.inc
|
||||
--source extra/binlog_tests/mysqlbinlog_row_engine.inc
|
||||
|
|
@ -20,4 +20,4 @@ let $engine_type=MyISAM;
|
|||
--source include/have_binlog_format_row.inc
|
||||
--source include/have_ucs2.inc
|
||||
|
||||
--source include/mysqlbinlog_row_engine.inc
|
||||
--source extra/binlog_tests/mysqlbinlog_row_engine.inc
|
53
mysql-test/suite/innodb/r/innodb_bug14704286.result
Normal file
53
mysql-test/suite/innodb/r/innodb_bug14704286.result
Normal file
|
@ -0,0 +1,53 @@
|
|||
use test;
|
||||
drop table if exists t1;
|
||||
create table t1 (id int primary key, value int, value2 int,
|
||||
value3 int, index(value,value2)) engine=innodb;
|
||||
insert into t1 values
|
||||
(10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14),
|
||||
(15,15,15,15),(16,16,16,16),(17,17,17,17),(18,18,18,18),(19,19,19,19),
|
||||
(20,20,20,20);
|
||||
use test;
|
||||
start transaction with consistent snapshot;
|
||||
use test;
|
||||
CREATE PROCEDURE update_t1()
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 1;
|
||||
while (i <= 5000) DO
|
||||
update test.t1 set value2=value2+1, value3=value3+1 where id=12;
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END|
|
||||
set autocommit=0;
|
||||
CALL update_t1();
|
||||
select * from t1;
|
||||
id value value2 value3
|
||||
10 10 10 10
|
||||
11 11 11 11
|
||||
12 12 5012 5012
|
||||
13 13 13 13
|
||||
14 14 14 14
|
||||
15 15 15 15
|
||||
16 16 16 16
|
||||
17 17 17 17
|
||||
18 18 18 18
|
||||
19 19 19 19
|
||||
20 20 20 20
|
||||
set autocommit=1;
|
||||
select * from t1;
|
||||
id value value2 value3
|
||||
10 10 10 10
|
||||
11 11 11 11
|
||||
12 12 5012 5012
|
||||
13 13 13 13
|
||||
14 14 14 14
|
||||
15 15 15 15
|
||||
16 16 16 16
|
||||
17 17 17 17
|
||||
18 18 18 18
|
||||
19 19 19 19
|
||||
20 20 20 20
|
||||
select * from t1 force index(value) where value=12;
|
||||
kill query @id;
|
||||
ERROR 70100: Query execution was interrupted
|
||||
drop procedure if exists update_t1;
|
||||
drop table if exists t1;
|
95
mysql-test/suite/innodb/t/innodb_bug14704286.test
Normal file
95
mysql-test/suite/innodb/t/innodb_bug14704286.test
Normal file
|
@ -0,0 +1,95 @@
|
|||
--source include/have_innodb.inc
|
||||
|
||||
#
|
||||
# create test-bed to run test
|
||||
#
|
||||
use test;
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1 (id int primary key, value int, value2 int,
|
||||
value3 int, index(value,value2)) engine=innodb;
|
||||
|
||||
insert into t1 values
|
||||
(10,10,10,10),(11,11,11,11),(12,12,12,12),(13,13,13,13),(14,14,14,14),
|
||||
(15,15,15,15),(16,16,16,16),(17,17,17,17),(18,18,18,18),(19,19,19,19),
|
||||
(20,20,20,20);
|
||||
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||
|
||||
#
|
||||
# we need multiple connections as we need to keep one connection
|
||||
# active with trx requesting consistent read.
|
||||
#
|
||||
connect (conn1, localhost, root,,);
|
||||
connect (conn2, localhost, root,,);
|
||||
connect (conn3, localhost, root,,);
|
||||
|
||||
#
|
||||
# start trx with consistent read
|
||||
#
|
||||
connection conn1;
|
||||
use test;
|
||||
|
||||
start transaction with consistent snapshot;
|
||||
|
||||
#
|
||||
# update table such that secondary index is updated.
|
||||
#
|
||||
connection conn2;
|
||||
use test;
|
||||
delimiter |;
|
||||
CREATE PROCEDURE update_t1()
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 1;
|
||||
while (i <= 5000) DO
|
||||
update test.t1 set value2=value2+1, value3=value3+1 where id=12;
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
set autocommit=0;
|
||||
CALL update_t1();
|
||||
select * from t1;
|
||||
set autocommit=1;
|
||||
select * from t1;
|
||||
|
||||
#
|
||||
# Now try to fire select query from connection-1 enforcing
|
||||
# use of secondary index.
|
||||
#
|
||||
connection conn1;
|
||||
let $ID= `SELECT @id := CONNECTION_ID()`;
|
||||
#--error ER_QUERY_INTERRUPTED
|
||||
--send
|
||||
select * from t1 force index(value) where value=12;
|
||||
|
||||
#
|
||||
# select is going to take good time so let's kill query.
|
||||
#
|
||||
connection conn3;
|
||||
let $wait_condition=
|
||||
select * from information_schema.processlist where state = 'Sending data' and
|
||||
info = 'select * from t1 force index(value) where value=12';
|
||||
--source include/wait_condition.inc
|
||||
let $ignore= `SELECT @id := $ID`;
|
||||
kill query @id;
|
||||
|
||||
#
|
||||
# reap the value of connection-1
|
||||
#
|
||||
connection conn1;
|
||||
--error ER_QUERY_INTERRUPTED
|
||||
reap;
|
||||
|
||||
#
|
||||
# clean test-bed.
|
||||
#
|
||||
connection default;
|
||||
disconnect conn1;
|
||||
disconnect conn2;
|
||||
disconnect conn3;
|
||||
drop procedure if exists update_t1;
|
||||
drop table if exists t1;
|
||||
|
||||
|
|
@ -68,6 +68,38 @@ RPAD(_ucs2 X'0420',10,_ucs2 X'0421') r;
|
|||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #51876 : crash/memory underrun when loading data with ucs2
|
||||
--echo # and reverse() function
|
||||
--echo #
|
||||
|
||||
--echo # Problem # 1 (original report): wrong parsing of ucs2 data
|
||||
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
|
||||
CREATE TABLE t1(a INT);
|
||||
LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
(@b) SET a=REVERSE(@b);
|
||||
--echo # should return 2 zeroes (as the value is truncated)
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
remove_file $MYSQLD_DATADIR/test/tmpp.txt;
|
||||
|
||||
|
||||
--echo # Problem # 2 : if you write and read ucs2 data to a file they're lost
|
||||
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
|
||||
CREATE TABLE t1(a INT);
|
||||
LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
(@b) SET a=REVERSE(@b);
|
||||
--echo # should return 0 and 1 (10 reversed)
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
remove_file $MYSQLD_DATADIR/test/tmpp2.txt;
|
||||
|
||||
|
||||
|
||||
#
|
||||
# BUG3946
|
||||
#
|
||||
|
|
1
mysql-test/t/grant_lowercase.opt
Normal file
1
mysql-test/t/grant_lowercase.opt
Normal file
|
@ -0,0 +1 @@
|
|||
--lower-case-table-names=1
|
31
mysql-test/t/grant_lowercase.test
Normal file
31
mysql-test/t/grant_lowercase.test
Normal file
|
@ -0,0 +1,31 @@
|
|||
# test cases for strmov(tmp_db, db) -> strnmov replacement in sql_acl.cc
|
||||
--source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# http://seclists.org/fulldisclosure/2012/Dec/4
|
||||
#
|
||||
|
||||
# in acl_get(), check_grant_db(), mysql_grant()
|
||||
grant file on *.* to user1@localhost with grant option;
|
||||
grant select on `a%`.* to user1@localhost with grant option;
|
||||
connect (conn1,localhost,user1,,);
|
||||
connection conn1;
|
||||
--error ER_WRONG_DB_NAME
|
||||
grant file on aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.* to 'user'@'%' identified by 'secret';
|
||||
connection default;
|
||||
disconnect conn1;
|
||||
drop user user1@localhost;
|
||||
|
||||
# in acl_load()
|
||||
call mtr.add_suppression("Incorrect database name");
|
||||
alter table mysql.host modify Db varchar(200);
|
||||
alter table mysql.db modify Db varchar(200);
|
||||
insert mysql.host set db=concat('=>', repeat(_utf8 'й', 200));
|
||||
insert mysql.db set db=concat('=>', repeat(_utf8 'й', 200));
|
||||
flush privileges; # shouldn't crash here
|
||||
delete from mysql.host where db like '=>%';
|
||||
delete from mysql.db where db like '=>%';
|
||||
alter table mysql.host modify Db char(64);
|
||||
alter table mysql.db modify Db char(64);
|
||||
flush privileges;
|
||||
|
|
@ -582,36 +582,40 @@ DROP TABLE t1;
|
|||
connection default;
|
||||
disconnect con1;
|
||||
|
||||
#############################################################################
|
||||
# The below protion is moved to ctype_ucs.test #
|
||||
#############################################################################
|
||||
#--echo #
|
||||
#--echo # Bug #51876 : crash/memory underrun when loading data with ucs2
|
||||
#--echo # and reverse() function
|
||||
#--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Bug #51876 : crash/memory underrun when loading data with ucs2
|
||||
--echo # and reverse() function
|
||||
--echo #
|
||||
#--echo # Problem # 1 (original report): wrong parsing of ucs2 data
|
||||
#SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
|
||||
#CREATE TABLE t1(a INT);
|
||||
#LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
#(@b) SET a=REVERSE(@b);
|
||||
#--echo # should return 2 zeroes (as the value is truncated)
|
||||
#SELECT * FROM t1;
|
||||
|
||||
--echo # Problem # 1 (original report): wrong parsing of ucs2 data
|
||||
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp.txt';
|
||||
CREATE TABLE t1(a INT);
|
||||
LOAD DATA INFILE 'tmpp.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
(@b) SET a=REVERSE(@b);
|
||||
--echo # should return 2 zeroes (as the value is truncated)
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
remove_file $MYSQLD_DATADIR/test/tmpp.txt;
|
||||
#DROP TABLE t1;
|
||||
#let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
#remove_file $MYSQLD_DATADIR/test/tmpp.txt;
|
||||
|
||||
|
||||
--echo # Problem # 2 : if you write and read ucs2 data to a file they're lost
|
||||
SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
|
||||
CREATE TABLE t1(a INT);
|
||||
LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
(@b) SET a=REVERSE(@b);
|
||||
--echo # should return 0 and 1 (10 reversed)
|
||||
SELECT * FROM t1;
|
||||
#--echo # Problem # 2 : if you write and read ucs2 data to a file they're lost
|
||||
#SELECT '00' UNION SELECT '10' INTO OUTFILE 'tmpp2.txt' CHARACTER SET ucs2;
|
||||
#CREATE TABLE t1(a INT);
|
||||
#LOAD DATA INFILE 'tmpp2.txt' INTO TABLE t1 CHARACTER SET ucs2
|
||||
#(@b) SET a=REVERSE(@b);
|
||||
#--echo # should return 0 and 1 (10 reversed)
|
||||
#SELECT * FROM t1;
|
||||
|
||||
#DROP TABLE t1;
|
||||
#let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
#remove_file $MYSQLD_DATADIR/test/tmpp2.txt;
|
||||
######################################################################################
|
||||
|
||||
DROP TABLE t1;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
remove_file $MYSQLD_DATADIR/test/tmpp2.txt;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#11765139 58069: LOAD DATA INFILE: VALGRIND REPORTS INVALID MEMORY READS AND WRITES WITH U
|
||||
|
|
|
@ -569,5 +569,17 @@ DROP DATABASE connected_db;
|
|||
--remove_file $MYSQLTEST_VARDIR/tmp/one_db_1.sql
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/one_db_2.sql
|
||||
|
||||
#
|
||||
# USE and names with backticks
|
||||
#
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/backticks.sql
|
||||
USE aa`bb``cc
|
||||
SELECT DATABASE();
|
||||
EOF
|
||||
create database `aa``bb````cc`;
|
||||
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/backticks.sql
|
||||
drop database `aa``bb````cc`;
|
||||
|
||||
|
||||
--echo
|
||||
--echo End of tests
|
||||
|
|
|
@ -325,16 +325,6 @@ DELETE FROM mysql.user WHERE User='mysqltest_1';
|
|||
FLUSH PRIVILEGES;
|
||||
|
||||
|
||||
#
|
||||
# Restore global concurrent_insert value. Keep in the end of the test file.
|
||||
#
|
||||
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#44521 Prepared Statement: CALL p() - crashes: `! thd->main_da.is_sent' failed et.al.
|
||||
--echo #
|
||||
|
@ -430,3 +420,13 @@ DROP EVENT teste_bug11763507;
|
|||
--echo # ------------------------------------------------------------------
|
||||
--echo # -- End of 5.1 tests
|
||||
--echo # ------------------------------------------------------------------
|
||||
|
||||
|
||||
#
|
||||
# Restore global concurrent_insert value. Keep in the end of the test file.
|
||||
#
|
||||
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
|
|
@ -89,15 +89,11 @@ end:
|
|||
|
||||
int my_copystat(const char *from, const char *to, int MyFlags)
|
||||
{
|
||||
struct stat statbuf;
|
||||
MY_STAT statbuf;
|
||||
|
||||
if (stat(from, &statbuf))
|
||||
{
|
||||
my_errno=errno;
|
||||
if (MyFlags & (MY_FAE+MY_WME))
|
||||
my_error(EE_STAT, MYF(ME_BELL+ME_WAITTANG),from,errno);
|
||||
if (my_stat(from, &statbuf, MyFlags) == NULL)
|
||||
return -1; /* Can't get stat on input file */
|
||||
}
|
||||
|
||||
if ((statbuf.st_mode & S_IFMT) != S_IFREG)
|
||||
return 1;
|
||||
|
||||
|
|
|
@ -5,6 +5,9 @@ INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include \
|
|||
EXTRA_LTLIBRARIES = feedback.la libfeedback.la
|
||||
pkgplugin_LTLIBRARIES = @plugin_feedback_shared_target@
|
||||
feedback_la_LDFLAGS = -module -rpath $(pkgplugindir) -L$(top_builddir)/libservices -lmysqlservices
|
||||
if HAVE_YASSL
|
||||
feedback_la_LIBADD = @yassl_libs@
|
||||
endif
|
||||
feedback_la_CXXFLAGS = -shared -DMYSQL_DYNAMIC_PLUGIN
|
||||
feedback_la_SOURCES = feedback.cc utils.cc url_base.cc url_http.cc \
|
||||
sender_thread.cc
|
||||
|
|
|
@ -44,6 +44,12 @@ static const char *get_os_version_name(OSVERSIONINFOEX *ver)
|
|||
DWORD major = ver->dwMajorVersion;
|
||||
DWORD minor = ver->dwMinorVersion;
|
||||
|
||||
if (major == 6 && minor == 2)
|
||||
{
|
||||
return (ver->wProductType == VER_NT_WORKSTATION)?
|
||||
"Windows 8":"Windows Server 2012";
|
||||
}
|
||||
|
||||
if (major == 6 && minor == 1)
|
||||
{
|
||||
return (ver->wProductType == VER_NT_WORKSTATION)?
|
||||
|
|
|
@ -423,8 +423,11 @@ my $mysqld_install_cmd_line = quote_options($mysqld_bootstrap,
|
|||
"--bootstrap",
|
||||
"--basedir=$opt->{basedir}",
|
||||
"--datadir=$opt->{ldata}",
|
||||
"--log-warnings=0",
|
||||
"--loose-skip-innodb",
|
||||
"--loose-skip-ndbcluster",
|
||||
"--max_allowed_packet=8M",
|
||||
"--default-storage-engine=MyISAM",
|
||||
"--net_buffer_length=16K",
|
||||
@args,
|
||||
);
|
||||
|
@ -437,6 +440,8 @@ report_verbose_wait($opt,"Installing MySQL system tables...");
|
|||
|
||||
open(SQL, $create_system_tables)
|
||||
or error($opt,"can't open $create_system_tables for reading: $!");
|
||||
open(SQL2, $fill_system_tables)
|
||||
or error($opt,"can't open $fill_system_tables for reading: $!");
|
||||
# FIXME > /dev/null ?
|
||||
if ( open(PIPE, "| $mysqld_install_cmd_line") )
|
||||
{
|
||||
|
@ -450,8 +455,20 @@ if ( open(PIPE, "| $mysqld_install_cmd_line") )
|
|||
|
||||
print PIPE $_;
|
||||
}
|
||||
while ( <SQL2> )
|
||||
{
|
||||
# TODO: make it similar to the above condition when we're sure
|
||||
# @@hostname returns a fqdn
|
||||
# When doing a "cross bootstrap" install, no reference to the current
|
||||
# host should be added to the system tables. So we filter out any
|
||||
# lines which contain the current host name.
|
||||
next if /\@current_hostname/;
|
||||
|
||||
print PIPE $_;
|
||||
}
|
||||
close PIPE;
|
||||
close SQL;
|
||||
close SQL2;
|
||||
|
||||
report_verbose($opt,"OK");
|
||||
|
||||
|
|
|
@ -47,6 +47,28 @@ $homedir = $ENV{HOME};
|
|||
$my_progname = $0;
|
||||
$my_progname =~ s/.*[\/]//;
|
||||
|
||||
|
||||
if (defined($ENV{UMASK})) {
|
||||
my $UMASK = $ENV{UMASK};
|
||||
my $m;
|
||||
my $fmode = "0640";
|
||||
|
||||
if(($UMASK =~ m/[^0246]/) || ($UMASK =~ m/^[^0]/) || (length($UMASK) != 4)) {
|
||||
printf("UMASK must be a 3-digit mode with an additional leading 0 to indicate octal.\n");
|
||||
printf("The first digit will be corrected to 6, the others may be 0, 2, 4, or 6.\n"); }
|
||||
else {
|
||||
$fmode= substr $UMASK, 2, 2;
|
||||
$fmode= "06${fmode}"; }
|
||||
|
||||
if($fmode != $UMASK) {
|
||||
printf("UMASK corrected from $UMASK to $fmode ...\n"); }
|
||||
|
||||
$fmode= oct($fmode);
|
||||
|
||||
umask($fmode);
|
||||
}
|
||||
|
||||
|
||||
main();
|
||||
|
||||
####
|
||||
|
|
|
@ -27,7 +27,28 @@ syslog_tag_mysqld_safe=mysqld_safe
|
|||
|
||||
trap '' 1 2 3 15 # we shouldn't let anyone kill us
|
||||
|
||||
umask 007
|
||||
# MySQL-specific environment variable. First off, it's not really a umask,
|
||||
# it's the desired mode. Second, it follows umask(2), not umask(3) in that
|
||||
# octal needs to be explicit. Our shell might be a proper sh without printf,
|
||||
# multiple-base arithmetic, and binary arithmetic, so this will get ugly.
|
||||
# We reject decimal values to keep things at least half-sane.
|
||||
umask 007 # fallback
|
||||
UMASK="${UMASK-0640}"
|
||||
fmode=`echo "$UMASK" | sed -e 's/[^0246]//g'`
|
||||
octalp=`echo "$fmode"|cut -c1`
|
||||
fmlen=`echo "$fmode"|wc -c|sed -e 's/ //g'`
|
||||
if [ "x$octalp" != "x0" -o "x$UMASK" != "x$fmode" -o "x$fmlen" != "x5" ]
|
||||
then
|
||||
fmode=0640
|
||||
echo "UMASK must be a 3-digit mode with an additional leading 0 to indicate octal." >&2
|
||||
echo "The first digit will be corrected to 6, the others may be 0, 2, 4, or 6." >&2
|
||||
fi
|
||||
fmode=`echo "$fmode"|cut -c3-4`
|
||||
fmode="6$fmode"
|
||||
if [ "x$UMASK" != "x0$fmode" ]
|
||||
then
|
||||
echo "UMASK corrected from $UMASK to 0$fmode ..."
|
||||
fi
|
||||
|
||||
defaults=
|
||||
case "$1" in
|
||||
|
@ -375,6 +396,12 @@ then
|
|||
# Log to err_log file
|
||||
log_notice "Logging to '$err_log'."
|
||||
logging=file
|
||||
|
||||
if [ ! -e "$err_log" ]; then # if error log already exists,
|
||||
touch "$err_log" # we just append. otherwise,
|
||||
chmod "$fmode" "$err_log" # fix the permissions here!
|
||||
fi
|
||||
|
||||
else
|
||||
if [ -n "$syslog_tag" ]
|
||||
then
|
||||
|
@ -580,6 +607,12 @@ do
|
|||
|
||||
eval_log_error "$cmd"
|
||||
|
||||
if [ $want_syslog -eq 0 -a ! -e "$err_log" ]; then
|
||||
touch "$err_log" # hypothetical: log was renamed but not
|
||||
chown $user "$err_log" # flushed yet. we'd recreate it with
|
||||
chmod "$fmode" "$err_log" # wrong owner next time we log, so set
|
||||
fi # it up correctly while we can!
|
||||
|
||||
if test ! -f "$pid_file" # This is removed if normal shutdown
|
||||
then
|
||||
break
|
||||
|
|
|
@ -3940,8 +3940,8 @@ static int old_password_auth_client(MYSQL_PLUGIN_VIO *vio, MYSQL *mysql)
|
|||
return CR_SERVER_HANDSHAKE_ERR;
|
||||
|
||||
/* save it in MYSQL */
|
||||
memcpy(mysql->scramble, pkt, pkt_len);
|
||||
mysql->scramble[pkt_len] = 0;
|
||||
memcpy(mysql->scramble, pkt, pkt_len - 1);
|
||||
mysql->scramble[pkt_len - 1] = 0;
|
||||
}
|
||||
|
||||
if (mysql->passwd[0])
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* Copyright (c) 2006, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2012, 2013, Monty Proram Ab.
|
||||
|
||||
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
|
||||
|
|
|
@ -215,6 +215,15 @@ char * ip_to_hostname(struct in_addr *in, uint *errors)
|
|||
}
|
||||
my_gethostbyname_r_free();
|
||||
#else
|
||||
|
||||
DBUG_EXECUTE_IF("addr_fake_ipv4",
|
||||
{
|
||||
const char* fake_host= "santa.claus.ipv4.example.com";
|
||||
name=my_strdup(fake_host, MYF(0));
|
||||
add_hostname(in,name);
|
||||
DBUG_RETURN(name);
|
||||
};);
|
||||
|
||||
VOID(pthread_mutex_lock(&LOCK_hostname));
|
||||
if (!(hp=gethostbyaddr((char*) in,sizeof(*in), AF_INET)))
|
||||
{
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
|
||||
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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008-2011 Monty Program Ab
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
|
||||
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
|
||||
|
@ -3742,7 +3742,8 @@ longlong Item_func_last_insert_id::val_int()
|
|||
thd->first_successful_insert_id_in_prev_stmt= value;
|
||||
return value;
|
||||
}
|
||||
return thd->read_first_successful_insert_id_in_prev_stmt();
|
||||
return
|
||||
static_cast<longlong>(thd->read_first_successful_insert_id_in_prev_stmt());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Copyright (c) 2000, 2010, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009-2011 Monty Program Ab
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
|
||||
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
|
||||
|
@ -1120,6 +1120,7 @@ public:
|
|||
const char *func_name() const { return "last_insert_id"; }
|
||||
void fix_length_and_dec()
|
||||
{
|
||||
unsigned_flag= TRUE;
|
||||
if (arg_count)
|
||||
max_length= args[0]->max_length;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2013, Monty Program Ab
|
||||
|
||||
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
|
||||
|
@ -4473,6 +4474,8 @@ MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd,
|
|||
if (pending->write(&trx_data->trans_log))
|
||||
{
|
||||
set_write_error(thd);
|
||||
delete pending;
|
||||
trx_data->set_pending(NULL);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
}
|
||||
|
@ -4485,6 +4488,8 @@ MYSQL_BIN_LOG::flush_and_set_pending_rows_event(THD *thd,
|
|||
{
|
||||
pthread_mutex_unlock(&LOCK_log);
|
||||
set_write_error(thd);
|
||||
delete pending;
|
||||
trx_data->set_pending(NULL);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
|
||||
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
|
||||
|
@ -34,7 +35,7 @@
|
|||
#include "rpl_utility.h"
|
||||
#include "rpl_record.h"
|
||||
#include <my_dir.h>
|
||||
#include "sql_show.h"
|
||||
#include "sql_show.h" // append_identifier
|
||||
|
||||
#endif /* MYSQL_CLIENT */
|
||||
|
||||
|
@ -79,6 +80,23 @@ TYPELIB binlog_checksum_typelib=
|
|||
*/
|
||||
#define FMT_G_BUFSIZE(PREC) (3 + (PREC) + 5 + 1)
|
||||
|
||||
/*
|
||||
Explicit instantiation to unsigned int of template available_buffer
|
||||
function.
|
||||
*/
|
||||
template unsigned int available_buffer<unsigned int>(const char*,
|
||||
const char*,
|
||||
unsigned int);
|
||||
|
||||
/*
|
||||
Explicit instantiation to unsigned int of template valid_buffer_range
|
||||
function.
|
||||
*/
|
||||
template bool valid_buffer_range<unsigned int>(unsigned int,
|
||||
const char*,
|
||||
const char*,
|
||||
unsigned int);
|
||||
|
||||
/*
|
||||
replication event checksum is introduced in the following "checksum-home" version.
|
||||
The checksum-aware servers extract FD's version to decide whether the FD event
|
||||
|
@ -1551,7 +1569,7 @@ Log_event* Log_event::read_log_event(const char* buf, uint event_len,
|
|||
ev = new Rand_log_event(buf, description_event);
|
||||
break;
|
||||
case USER_VAR_EVENT:
|
||||
ev = new User_var_log_event(buf, description_event);
|
||||
ev = new User_var_log_event(buf, event_len, description_event);
|
||||
break;
|
||||
case FORMAT_DESCRIPTION_EVENT:
|
||||
ev = new Format_description_log_event(buf, event_len, description_event);
|
||||
|
@ -1984,11 +2002,11 @@ beg:
|
|||
int i, end;
|
||||
char buff[512], *pos;
|
||||
pos= buff;
|
||||
pos+= my_sprintf(buff, (buff, "%s", dec.sign() ? "-" : ""));
|
||||
pos+= sprintf(buff, "%s", dec.sign() ? "-" : "");
|
||||
end= ROUND_UP(dec.frac) + ROUND_UP(dec.intg)-1;
|
||||
for (i=0; i < end; i++)
|
||||
pos+= my_sprintf(pos, (pos, "%09d.", dec.buf[i]));
|
||||
pos+= my_sprintf(pos, (pos, "%09d", dec.buf[i]));
|
||||
pos+= sprintf(pos, "%09d.", dec.buf[i]);
|
||||
pos+= sprintf(pos, "%09d", dec.buf[i]);
|
||||
my_b_printf(file, "%s", buff);
|
||||
my_snprintf(typestr, typestr_length, "DECIMAL(%d,%d)",
|
||||
precision, decimals);
|
||||
|
@ -2272,7 +2290,7 @@ void Rows_log_event::print_verbose(IO_CACHE *file,
|
|||
for (const uchar *value= m_rows_buf; value < m_rows_end; )
|
||||
{
|
||||
size_t length;
|
||||
my_b_printf(file, "### %s %s.%s\n",
|
||||
my_b_printf(file, "### %s %`s.%`s\n",
|
||||
sql_command,
|
||||
map->get_db_name(), map->get_table_name());
|
||||
/* Print the first image */
|
||||
|
@ -2440,7 +2458,7 @@ void Query_log_event::pack_info(THD *thd, Protocol *protocol)
|
|||
{
|
||||
buf.append(STRING_WITH_LEN("use "));
|
||||
append_identifier(thd, &buf, db, db_len);
|
||||
buf.append("; ");
|
||||
buf.append(STRING_WITH_LEN("; "));
|
||||
}
|
||||
if (query && q_len)
|
||||
buf.append(query, q_len);
|
||||
|
@ -3254,17 +3272,11 @@ void Query_log_event::print_query_header(IO_CACHE* file,
|
|||
}
|
||||
else if (db)
|
||||
{
|
||||
/* Room for expand ` to `` + initial/final ` + \0 */
|
||||
char buf[FN_REFLEN*2+3];
|
||||
|
||||
different_db= memcmp(print_event_info->db, db, db_len + 1);
|
||||
if (different_db)
|
||||
memcpy(print_event_info->db, db, db_len + 1);
|
||||
if (db[0] && different_db)
|
||||
{
|
||||
my_snprintf(buf, sizeof(buf), "%`s", db);
|
||||
my_b_printf(file, "use %s%s\n", buf, print_event_info->delimiter);
|
||||
}
|
||||
my_b_printf(file, "use %`s%s\n", db, print_event_info->delimiter);
|
||||
}
|
||||
|
||||
end=int10_to_str((long) when, strmov(buff,"SET TIMESTAMP="),10);
|
||||
|
@ -5024,7 +5036,7 @@ void Load_log_event::print(FILE* file_arg, PRINT_EVENT_INFO* print_event_info,
|
|||
}
|
||||
|
||||
if (db && db[0] && different_db)
|
||||
my_b_printf(&cache, "%suse %s%s\n",
|
||||
my_b_printf(&cache, "%suse %`s%s\n",
|
||||
commented ? "# " : "",
|
||||
db, print_event_info->delimiter);
|
||||
|
||||
|
@ -5076,7 +5088,7 @@ void Load_log_event::print(FILE* file_arg, PRINT_EVENT_INFO* print_event_info,
|
|||
{
|
||||
if (i)
|
||||
my_b_printf(&cache, ",");
|
||||
my_b_printf(&cache, "%s", field);
|
||||
my_b_printf(&cache, "%`s", field);
|
||||
|
||||
field += field_lens[i] + 1;
|
||||
}
|
||||
|
@ -6119,18 +6131,34 @@ void User_var_log_event::pack_info(THD *thd, Protocol* protocol)
|
|||
|
||||
|
||||
User_var_log_event::
|
||||
User_var_log_event(const char* buf,
|
||||
User_var_log_event(const char* buf, uint event_len,
|
||||
const Format_description_log_event* description_event)
|
||||
:Log_event(buf, description_event)
|
||||
#ifndef MYSQL_CLIENT
|
||||
, deferred(false)
|
||||
#endif
|
||||
{
|
||||
bool error= false;
|
||||
const char* buf_start= buf;
|
||||
/* The Post-Header is empty. The Variable Data part begins immediately. */
|
||||
buf+= description_event->common_header_len +
|
||||
description_event->post_header_len[USER_VAR_EVENT-1];
|
||||
name_len= uint4korr(buf);
|
||||
name= (char *) buf + UV_NAME_LEN_SIZE;
|
||||
|
||||
/*
|
||||
We don't know yet is_null value, so we must assume that name_len
|
||||
may have the bigger value possible, is_null= True and there is no
|
||||
payload for val.
|
||||
*/
|
||||
if (0 == name_len ||
|
||||
!valid_buffer_range<uint>(name_len, buf_start, name,
|
||||
event_len - UV_VAL_IS_NULL))
|
||||
{
|
||||
error= true;
|
||||
goto err;
|
||||
}
|
||||
|
||||
buf+= UV_NAME_LEN_SIZE + name_len;
|
||||
is_null= (bool) *buf;
|
||||
if (is_null)
|
||||
|
@ -6142,13 +6170,31 @@ User_var_log_event(const char* buf,
|
|||
}
|
||||
else
|
||||
{
|
||||
if (!valid_buffer_range<uint>(UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE
|
||||
+ UV_CHARSET_NUMBER_SIZE + UV_VAL_LEN_SIZE,
|
||||
buf_start, buf, event_len))
|
||||
{
|
||||
error= true;
|
||||
goto err;
|
||||
}
|
||||
|
||||
type= (Item_result) buf[UV_VAL_IS_NULL];
|
||||
charset_number= uint4korr(buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE);
|
||||
val_len= uint4korr(buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE +
|
||||
UV_CHARSET_NUMBER_SIZE);
|
||||
val= (char *) (buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE +
|
||||
UV_CHARSET_NUMBER_SIZE + UV_VAL_LEN_SIZE);
|
||||
|
||||
if (!valid_buffer_range<uint>(val_len, buf_start, val, event_len))
|
||||
{
|
||||
error= true;
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
err:
|
||||
if (error)
|
||||
name= 0;
|
||||
}
|
||||
|
||||
|
||||
|
@ -6291,8 +6337,9 @@ void User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||
char *hex_str;
|
||||
CHARSET_INFO *cs;
|
||||
|
||||
if (!(hex_str= (char *)my_alloca(2*val_len+1+2))) // 2 hex digits / byte
|
||||
break; // no error, as we are 'void'
|
||||
hex_str= (char *)my_malloc(2*val_len+1+2,MYF(MY_WME)); // 2 hex digits / byte
|
||||
if (!hex_str)
|
||||
return;
|
||||
str_to_hex(hex_str, val, val_len);
|
||||
/*
|
||||
For proper behaviour when mysqlbinlog|mysql, we need to explicitely
|
||||
|
@ -6310,7 +6357,7 @@ void User_var_log_event::print(FILE* file, PRINT_EVENT_INFO* print_event_info)
|
|||
my_b_printf(&cache, ":=_%s %s COLLATE %`s%s\n",
|
||||
cs->csname, hex_str, cs->name,
|
||||
print_event_info->delimiter);
|
||||
my_afree(hex_str);
|
||||
my_free(hex_str, MYF(MY_WME));
|
||||
}
|
||||
break;
|
||||
case ROW_RESULT:
|
||||
|
@ -7537,9 +7584,9 @@ void Execute_load_query_log_event::pack_info(THD *thd, Protocol *protocol)
|
|||
buf.real_alloc(9 + db_len + q_len + 10 + 21);
|
||||
if (db && db_len)
|
||||
{
|
||||
if (buf.append("use ") ||
|
||||
if (buf.append(STRING_WITH_LEN("use ")) ||
|
||||
append_identifier(thd, &buf, db, db_len) ||
|
||||
buf.append("; "))
|
||||
buf.append(STRING_WITH_LEN("; ")))
|
||||
return;
|
||||
}
|
||||
if (query && q_len && buf.append(query, q_len))
|
||||
|
|
|
@ -2603,7 +2603,7 @@ public:
|
|||
void print(FILE* file, PRINT_EVENT_INFO* print_event_info);
|
||||
#endif
|
||||
|
||||
User_var_log_event(const char* buf,
|
||||
User_var_log_event(const char* buf, uint event_len,
|
||||
const Format_description_log_event *description_event);
|
||||
~User_var_log_event() {}
|
||||
Log_event_type get_type_code() { return USER_VAR_EVENT;}
|
||||
|
@ -2615,9 +2615,9 @@ public:
|
|||
and which case the applier adjusts execution path.
|
||||
*/
|
||||
bool is_deferred() { return deferred; }
|
||||
void set_deferred() { deferred= val; }
|
||||
void set_deferred() { deferred= true; }
|
||||
#endif
|
||||
bool is_valid() const { return 1; }
|
||||
bool is_valid() const { return name != 0; }
|
||||
|
||||
private:
|
||||
#if !defined(MYSQL_CLIENT) && defined(HAVE_REPLICATION)
|
||||
|
|
|
@ -521,6 +521,41 @@ protected:
|
|||
*/
|
||||
#define MAX_TIME_ZONE_NAME_LENGTH (NAME_LEN + 1)
|
||||
|
||||
/*
|
||||
Check how many bytes are available on buffer.
|
||||
|
||||
@param buf_start Pointer to buffer start.
|
||||
@param buf_current Pointer to the current position on buffer.
|
||||
@param buf_len Buffer length.
|
||||
|
||||
@return Number of bytes available on event buffer.
|
||||
*/
|
||||
template <class T> T available_buffer(const char* buf_start,
|
||||
const char* buf_current,
|
||||
T buf_len)
|
||||
{
|
||||
return buf_len - (buf_current - buf_start);
|
||||
}
|
||||
|
||||
/*
|
||||
Check if jump value is within buffer limits.
|
||||
|
||||
@param jump Number of positions we want to advance.
|
||||
@param buf_start Pointer to buffer start
|
||||
@param buf_current Pointer to the current position on buffer.
|
||||
@param buf_len Buffer length.
|
||||
|
||||
@return True If jump value is within buffer limits.
|
||||
False Otherwise.
|
||||
*/
|
||||
template <class T> bool valid_buffer_range(T jump,
|
||||
const char* buf_start,
|
||||
const char* buf_current,
|
||||
T buf_len)
|
||||
{
|
||||
return (jump <= available_buffer(buf_start, buf_current, buf_len));
|
||||
}
|
||||
|
||||
/* The rest of the file is included in the server only */
|
||||
#ifndef MYSQL_CLIENT
|
||||
|
||||
|
|
|
@ -5093,7 +5093,7 @@ void create_thread_to_handle_connection(THD *thd)
|
|||
if (cached_thread_count > wake_thread)
|
||||
{
|
||||
/* Get thread from cache */
|
||||
thread_cache.append(thd);
|
||||
thread_cache.push_back(thd);
|
||||
wake_thread++;
|
||||
pthread_cond_signal(&COND_thread_cache);
|
||||
}
|
||||
|
|
|
@ -3835,8 +3835,6 @@ typedef struct st_sp_table
|
|||
Multi-set key:
|
||||
db_name\0table_name\0alias\0 - for normal tables
|
||||
db_name\0table_name\0 - for temporary tables
|
||||
Note that in both cases we don't take last '\0' into account when
|
||||
we count length of key.
|
||||
*/
|
||||
LEX_STRING qname;
|
||||
uint db_length, table_name_length;
|
||||
|
@ -3893,19 +3891,26 @@ sp_head::merge_table_list(THD *thd, TABLE_LIST *table, LEX *lex_for_tmp_check)
|
|||
for (; table ; table= table->next_global)
|
||||
if (!table->derived && !table->schema_table)
|
||||
{
|
||||
char tname[(SAFE_NAME_LEN + 1) * 3]; // db\0table\0alias\0
|
||||
uint tlen, alen;
|
||||
/*
|
||||
Structure of key for the multi-set is "db\0table\0alias\0".
|
||||
Since "alias" part can have arbitrary length we use String
|
||||
object to construct the key. By default String will use
|
||||
buffer allocated on stack with NAME_LEN bytes reserved for
|
||||
alias, since in most cases it is going to be smaller than
|
||||
NAME_LEN bytes.
|
||||
*/
|
||||
char tname_buff[(SAFE_NAME_LEN + 1) * 3];
|
||||
String tname(tname_buff, sizeof(tname_buff), &my_charset_bin);
|
||||
uint temp_table_key_length;
|
||||
|
||||
tlen= table->db_length;
|
||||
memcpy(tname, table->db, tlen);
|
||||
tname[tlen++]= '\0';
|
||||
memcpy(tname+tlen, table->table_name, table->table_name_length);
|
||||
tlen+= table->table_name_length;
|
||||
tname[tlen++]= '\0';
|
||||
alen= strlen(table->alias);
|
||||
memcpy(tname+tlen, table->alias, alen);
|
||||
tlen+= alen;
|
||||
tname[tlen]= '\0';
|
||||
tname.length(0);
|
||||
tname.append(table->db, table->db_length);
|
||||
tname.append('\0');
|
||||
tname.append(table->table_name, table->table_name_length);
|
||||
tname.append('\0');
|
||||
temp_table_key_length= tname.length();
|
||||
tname.append(table->alias);
|
||||
tname.append('\0');
|
||||
|
||||
/*
|
||||
Upgrade the lock type because this table list will be used
|
||||
|
@ -3920,9 +3925,10 @@ sp_head::merge_table_list(THD *thd, TABLE_LIST *table, LEX *lex_for_tmp_check)
|
|||
(and therefore should not be prelocked). Otherwise we will erroneously
|
||||
treat table with same name but with different alias as non-temporary.
|
||||
*/
|
||||
if ((tab= (SP_TABLE *)hash_search(&m_sptabs, (uchar *)tname, tlen)) ||
|
||||
((tab= (SP_TABLE *)hash_search(&m_sptabs, (uchar *)tname,
|
||||
tlen - alen - 1)) &&
|
||||
if ((tab= (SP_TABLE *)hash_search(&m_sptabs, (uchar *)tname.ptr(),
|
||||
tname.length())) ||
|
||||
((tab= (SP_TABLE *)hash_search(&m_sptabs, (uchar *)tname.ptr(),
|
||||
temp_table_key_length)) &&
|
||||
tab->temp))
|
||||
{
|
||||
if (tab->lock_type < table->lock_type)
|
||||
|
@ -3941,11 +3947,11 @@ sp_head::merge_table_list(THD *thd, TABLE_LIST *table, LEX *lex_for_tmp_check)
|
|||
lex_for_tmp_check->create_info.options & HA_LEX_CREATE_TMP_TABLE)
|
||||
{
|
||||
tab->temp= TRUE;
|
||||
tab->qname.length= tlen - alen - 1;
|
||||
tab->qname.length= temp_table_key_length;
|
||||
}
|
||||
else
|
||||
tab->qname.length= tlen;
|
||||
tab->qname.str= (char*) thd->memdup(tname, tab->qname.length + 1);
|
||||
tab->qname.length= tname.length();
|
||||
tab->qname.str= (char*) thd->memdup(tname.ptr(), tab->qname.length);
|
||||
if (!tab->qname.str)
|
||||
return FALSE;
|
||||
tab->table_name_length= table->table_name_length;
|
||||
|
@ -4014,7 +4020,7 @@ sp_head::add_used_tables_to_table_list(THD *thd,
|
|||
if (!(tab_buff= (char *)thd->calloc(ALIGN_SIZE(sizeof(TABLE_LIST)) *
|
||||
stab->lock_count)) ||
|
||||
!(key_buff= (char*)thd->memdup(stab->qname.str,
|
||||
stab->qname.length + 1)))
|
||||
stab->qname.length)))
|
||||
DBUG_RETURN(FALSE);
|
||||
|
||||
for (uint j= 0; j < stab->lock_count; j++)
|
||||
|
|
121
sql/sql_acl.cc
121
sql/sql_acl.cc
|
@ -1,5 +1,5 @@
|
|||
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009-2011, Monty Program Ab
|
||||
Copyright (c) 2009, 2013, Monty Program Ab
|
||||
|
||||
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
|
||||
|
@ -296,7 +296,17 @@ static bool compare_hostname(const acl_host_and_ip *host,const char *hostname,
|
|||
static my_bool acl_load(THD *thd, TABLE_LIST *tables);
|
||||
static my_bool grant_load(THD *thd, TABLE_LIST *tables);
|
||||
static inline void get_grantor(THD *thd, char* grantor);
|
||||
|
||||
/*
|
||||
Enumeration of various ACL's and Hashes used in handle_grant_struct()
|
||||
*/
|
||||
enum enum_acl_lists
|
||||
{
|
||||
USER_ACL= 0,
|
||||
DB_ACL,
|
||||
COLUMN_PRIVILEGES_HASH,
|
||||
PROC_PRIVILEGES_HASH,
|
||||
FUNC_PRIVILEGES_HASH
|
||||
};
|
||||
/*
|
||||
Convert scrambled password to binary form, according to scramble type,
|
||||
Binary form is stored in user.salt.
|
||||
|
@ -498,7 +508,12 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
|
|||
convert db to lower case and give a warning if the db wasn't
|
||||
already in lower case
|
||||
*/
|
||||
(void) strmov(tmp_name, host.db);
|
||||
char *end = strnmov(tmp_name, host.db, sizeof(tmp_name));
|
||||
if (end >= tmp_name + sizeof(tmp_name))
|
||||
{
|
||||
sql_print_warning(ER(ER_WRONG_DB_NAME), host.db);
|
||||
continue;
|
||||
}
|
||||
my_casedn_str(files_charset_info, host.db);
|
||||
if (strcmp(host.db, tmp_name) != 0)
|
||||
sql_print_warning("'host' entry '%s|%s' had database in mixed "
|
||||
|
@ -791,7 +806,12 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
|
|||
convert db to lower case and give a warning if the db wasn't
|
||||
already in lower case
|
||||
*/
|
||||
(void)strmov(tmp_name, db.db);
|
||||
char *end = strnmov(tmp_name, db.db, sizeof(tmp_name));
|
||||
if (end >= tmp_name + sizeof(tmp_name))
|
||||
{
|
||||
sql_print_warning(ER(ER_WRONG_DB_NAME), db.db);
|
||||
continue;
|
||||
}
|
||||
my_casedn_str(files_charset_info, db.db);
|
||||
if (strcmp(db.db, tmp_name) != 0)
|
||||
{
|
||||
|
@ -2505,15 +2525,23 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
|
|||
const char *user, const char *tname,
|
||||
bool exact, bool name_tolower)
|
||||
{
|
||||
char helping [SAFE_NAME_LEN*2+USERNAME_LENGTH+3], *name_ptr;
|
||||
char helping[SAFE_NAME_LEN*2+USERNAME_LENGTH+3];
|
||||
char *hend = helping + sizeof(helping);
|
||||
uint len;
|
||||
GRANT_NAME *grant_name,*found=0;
|
||||
HASH_SEARCH_STATE state;
|
||||
|
||||
name_ptr= strmov(strmov(helping, user) + 1, db) + 1;
|
||||
len = (uint) (strmov(name_ptr, tname) - helping) + 1;
|
||||
char *db_ptr= strmov(helping, user) + 1;
|
||||
char *tname_ptr= strnmov(db_ptr, db, hend - db_ptr) + 1;
|
||||
if (tname_ptr > hend)
|
||||
return 0; // invalid name = not found
|
||||
char *end= strnmov(tname_ptr, tname, hend - tname_ptr) + 1;
|
||||
if (end > hend)
|
||||
return 0; // invalid name = not found
|
||||
|
||||
len = (uint) (end - helping);
|
||||
if (name_tolower)
|
||||
my_casedn_str(files_charset_info, name_ptr);
|
||||
my_casedn_str(files_charset_info, tname_ptr);
|
||||
for (grant_name= (GRANT_NAME*) hash_first(name_hash, (uchar*) helping,
|
||||
len, &state);
|
||||
grant_name ;
|
||||
|
@ -3498,7 +3526,12 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
|
|||
|
||||
if (lower_case_table_names && db)
|
||||
{
|
||||
strmov(tmp_db,db);
|
||||
char *end= strnmov(tmp_db,db, sizeof(tmp_db));
|
||||
if (end >= tmp_db + sizeof(tmp_db))
|
||||
{
|
||||
my_error(ER_WRONG_DB_NAME ,MYF(0), db);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
my_casedn_str(files_charset_info, tmp_db);
|
||||
db=tmp_db;
|
||||
}
|
||||
|
@ -5452,19 +5485,19 @@ static int handle_grant_table(TABLE_LIST *tables, uint table_no, bool drop,
|
|||
Delete from grant structure if drop is true.
|
||||
Update in grant structure if drop is false and user_to is not NULL.
|
||||
Search in grant structure if drop is false and user_to is NULL.
|
||||
Structures are numbered as follows:
|
||||
0 acl_users
|
||||
1 acl_dbs
|
||||
2 column_priv_hash
|
||||
3 proc_priv_hash
|
||||
4 func_priv_hash
|
||||
Structures are enumerated as follows:
|
||||
0 ACL_USER
|
||||
1 ACL_DB
|
||||
2 COLUMN_PRIVILEGES_HASH
|
||||
3 PROC_PRIVILEGES_HASH
|
||||
4 FUNC_PRIVILEGES_HASH
|
||||
|
||||
@retval > 0 At least one element matched.
|
||||
@retval 0 OK, but no element matched.
|
||||
@retval -1 Wrong arguments to function.
|
||||
@retval -1 Wrong arguments to function or Out of Memory
|
||||
*/
|
||||
|
||||
static int handle_grant_struct(uint struct_no, bool drop,
|
||||
static int handle_grant_struct(enum enum_acl_lists struct_no, bool drop,
|
||||
LEX_USER *user_from, LEX_USER *user_to)
|
||||
{
|
||||
int result= 0;
|
||||
|
@ -5487,21 +5520,21 @@ static int handle_grant_struct(uint struct_no, bool drop,
|
|||
|
||||
/* Get the number of elements in the in-memory structure. */
|
||||
switch (struct_no) {
|
||||
case 0:
|
||||
case USER_ACL:
|
||||
elements= acl_users.elements;
|
||||
break;
|
||||
case 1:
|
||||
case DB_ACL:
|
||||
elements= acl_dbs.elements;
|
||||
break;
|
||||
case 2:
|
||||
case COLUMN_PRIVILEGES_HASH:
|
||||
grant_name_hash= &column_priv_hash;
|
||||
elements= grant_name_hash->records;
|
||||
break;
|
||||
case 3:
|
||||
case PROC_PRIVILEGES_HASH:
|
||||
grant_name_hash= &proc_priv_hash;
|
||||
elements= grant_name_hash->records;
|
||||
break;
|
||||
case 4:
|
||||
case FUNC_PRIVILEGES_HASH:
|
||||
grant_name_hash= &func_priv_hash;
|
||||
elements= grant_name_hash->records;
|
||||
break;
|
||||
|
@ -5520,21 +5553,21 @@ static int handle_grant_struct(uint struct_no, bool drop,
|
|||
Get a pointer to the element.
|
||||
*/
|
||||
switch (struct_no) {
|
||||
case 0:
|
||||
case USER_ACL:
|
||||
acl_user= dynamic_element(&acl_users, idx, ACL_USER*);
|
||||
user= acl_user->user;
|
||||
host= acl_user->host.hostname;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case DB_ACL:
|
||||
acl_db= dynamic_element(&acl_dbs, idx, ACL_DB*);
|
||||
user= acl_db->user;
|
||||
host= acl_db->host.hostname;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case COLUMN_PRIVILEGES_HASH:
|
||||
case PROC_PRIVILEGES_HASH:
|
||||
case FUNC_PRIVILEGES_HASH:
|
||||
grant_name= (GRANT_NAME*) hash_element(grant_name_hash, idx);
|
||||
user= grant_name->user;
|
||||
host= grant_name->host.hostname;
|
||||
|
@ -5560,17 +5593,17 @@ static int handle_grant_struct(uint struct_no, bool drop,
|
|||
if ( drop )
|
||||
{
|
||||
switch ( struct_no ) {
|
||||
case 0:
|
||||
case USER_ACL:
|
||||
delete_dynamic_element(&acl_users, idx);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case DB_ACL:
|
||||
delete_dynamic_element(&acl_dbs, idx);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case COLUMN_PRIVILEGES_HASH:
|
||||
case PROC_PRIVILEGES_HASH:
|
||||
case FUNC_PRIVILEGES_HASH:
|
||||
hash_delete(grant_name_hash, (uchar*) grant_name);
|
||||
break;
|
||||
}
|
||||
|
@ -5593,19 +5626,19 @@ static int handle_grant_struct(uint struct_no, bool drop,
|
|||
else if ( user_to )
|
||||
{
|
||||
switch ( struct_no ) {
|
||||
case 0:
|
||||
case USER_ACL:
|
||||
acl_user->user= strdup_root(&mem, user_to->user.str);
|
||||
acl_user->host.hostname= strdup_root(&mem, user_to->host.str);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case DB_ACL:
|
||||
acl_db->user= strdup_root(&mem, user_to->user.str);
|
||||
acl_db->host.hostname= strdup_root(&mem, user_to->host.str);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case COLUMN_PRIVILEGES_HASH:
|
||||
case PROC_PRIVILEGES_HASH:
|
||||
case FUNC_PRIVILEGES_HASH:
|
||||
{
|
||||
/*
|
||||
Save old hash key and its length to be able properly update
|
||||
|
@ -5626,8 +5659,8 @@ static int handle_grant_struct(uint struct_no, bool drop,
|
|||
is renamed, the hash key is changed. Update the hash to
|
||||
ensure that the position matches the new hash key value
|
||||
*/
|
||||
hash_update(grant_name_hash, (uchar*) grant_name, (uchar*) old_key,
|
||||
old_key_length);
|
||||
my_hash_update(grant_name_hash, (uchar*) grant_name, (uchar*) old_key,
|
||||
old_key_length);
|
||||
/*
|
||||
hash_update() operation could have moved element from the tail
|
||||
of the hash to the current position. So we need to take a look
|
||||
|
@ -5696,7 +5729,7 @@ static int handle_grant_data(TABLE_LIST *tables, bool drop,
|
|||
else
|
||||
{
|
||||
/* Handle user array. */
|
||||
if ((handle_grant_struct(0, drop, user_from, user_to)) || found)
|
||||
if ((handle_grant_struct(USER_ACL, drop, user_from, user_to)) || found)
|
||||
{
|
||||
result= 1; /* At least one record/element found. */
|
||||
/* If search is requested, we do not need to search further. */
|
||||
|
@ -5714,7 +5747,7 @@ static int handle_grant_data(TABLE_LIST *tables, bool drop,
|
|||
else
|
||||
{
|
||||
/* Handle db array. */
|
||||
if (((handle_grant_struct(1, drop, user_from, user_to) && ! result) ||
|
||||
if (((handle_grant_struct(DB_ACL, drop, user_from, user_to) && ! result) ||
|
||||
found) && ! result)
|
||||
{
|
||||
result= 1; /* At least one record/element found. */
|
||||
|
@ -5733,7 +5766,7 @@ static int handle_grant_data(TABLE_LIST *tables, bool drop,
|
|||
else
|
||||
{
|
||||
/* Handle procs array. */
|
||||
if (((handle_grant_struct(3, drop, user_from, user_to) && ! result) ||
|
||||
if (((handle_grant_struct(PROC_PRIVILEGES_HASH, drop, user_from, user_to) && ! result) ||
|
||||
found) && ! result)
|
||||
{
|
||||
result= 1; /* At least one record/element found. */
|
||||
|
@ -5742,7 +5775,7 @@ static int handle_grant_data(TABLE_LIST *tables, bool drop,
|
|||
goto end;
|
||||
}
|
||||
/* Handle funcs array. */
|
||||
if (((handle_grant_struct(4, drop, user_from, user_to) && ! result) ||
|
||||
if (((handle_grant_struct(FUNC_PRIVILEGES_HASH, drop, user_from, user_to) && ! result) ||
|
||||
found) && ! result)
|
||||
{
|
||||
result= 1; /* At least one record/element found. */
|
||||
|
@ -5777,7 +5810,7 @@ static int handle_grant_data(TABLE_LIST *tables, bool drop,
|
|||
else
|
||||
{
|
||||
/* Handle columns hash. */
|
||||
if (((handle_grant_struct(2, drop, user_from, user_to) && ! result) ||
|
||||
if (((handle_grant_struct(COLUMN_PRIVILEGES_HASH, drop, user_from, user_to) && ! result) ||
|
||||
found) && ! result)
|
||||
result= 1; /* At least one record/element found. */
|
||||
}
|
||||
|
|
|
@ -4261,34 +4261,17 @@ retry:
|
|||
char query_buf[2*FN_REFLEN + 21];
|
||||
String query(query_buf, sizeof(query_buf), system_charset_info);
|
||||
query.length(0);
|
||||
if (query.ptr())
|
||||
{
|
||||
/* this DELETE FROM is needed even with row-based binlogging */
|
||||
query.append("DELETE FROM ");
|
||||
append_identifier(thd, &query, share->db.str, share->db.length);
|
||||
query.append(".");
|
||||
append_identifier(thd, &query, share->table_name.str,
|
||||
share->table_name.length);
|
||||
int errcode= query_error_code(thd, TRUE);
|
||||
if (thd->binlog_query(THD::STMT_QUERY_TYPE,
|
||||
query.ptr(), query.length(),
|
||||
FALSE, FALSE, errcode))
|
||||
goto err;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
As replication is maybe going to be corrupted, we need to warn the
|
||||
DBA on top of warning the client (which will automatically be done
|
||||
because of MYF(MY_WME) in my_malloc() above).
|
||||
*/
|
||||
sql_print_error("When opening HEAP table, could not allocate memory "
|
||||
"to write 'DELETE FROM %`s.%`s' to the binary log",
|
||||
table_list->db, table_list->table_name);
|
||||
delete entry->triggers;
|
||||
closefrm(entry, 0);
|
||||
/* this DELETE FROM is needed even with row-based binlogging */
|
||||
query.append("DELETE FROM ");
|
||||
append_identifier(thd, &query, share->db.str, share->db.length);
|
||||
query.append(".");
|
||||
append_identifier(thd, &query, share->table_name.str,
|
||||
share->table_name.length);
|
||||
int errcode= query_error_code(thd, TRUE);
|
||||
if (thd->binlog_query(THD::STMT_QUERY_TYPE,
|
||||
query.ptr(), query.length(),
|
||||
FALSE, FALSE, errcode))
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
|
|
|
@ -889,6 +889,19 @@ static int check_connection(THD *thd)
|
|||
my_error(ER_BAD_HOST_ERROR, MYF(0));
|
||||
return 1;
|
||||
}
|
||||
/* BEGIN : DEBUG */
|
||||
DBUG_EXECUTE_IF("addr_fake_ipv4",
|
||||
{
|
||||
struct sockaddr *sa= (sockaddr *) &net->vio->remote;
|
||||
sa->sa_family= AF_INET;
|
||||
struct in_addr *ip4= &((struct sockaddr_in *)sa)->sin_addr;
|
||||
/* See RFC 5737, 192.0.2.0/23 is reserved */
|
||||
const char* fake= "192.0.2.4";
|
||||
ip4->s_addr= inet_addr(fake);
|
||||
strcpy(ip, fake);
|
||||
};);
|
||||
/* END : DEBUG */
|
||||
|
||||
if (!(thd->main_security_ctx.ip= my_strdup(ip,MYF(MY_WME))))
|
||||
return 1; /* The error is set by my_strdup(). */
|
||||
thd->main_security_ctx.host_or_ip= thd->main_security_ctx.ip;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
|
||||
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
|
||||
|
@ -882,7 +883,7 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
|
|||
{
|
||||
long deleted=0;
|
||||
int error= 0;
|
||||
char path[FN_REFLEN+16];
|
||||
char path[FN_REFLEN + 16];
|
||||
MY_DIR *dirp;
|
||||
uint length;
|
||||
TABLE_LIST* dropped_tables= 0;
|
||||
|
@ -1020,7 +1021,7 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent)
|
|||
|
||||
if (!(query= (char*) thd->alloc(MAX_DROP_TABLE_Q_LEN)))
|
||||
goto exit; /* not much else we can do */
|
||||
query_pos= query_data_start= strmov(query,"drop table ");
|
||||
query_pos= query_data_start= strmov(query,"DROP TABLE ");
|
||||
query_end= query + MAX_DROP_TABLE_Q_LEN;
|
||||
db_len= strlen(db);
|
||||
|
||||
|
|
|
@ -3564,9 +3564,8 @@ int select_create::write_to_binlog(bool is_trans, int errcode)
|
|||
if (f != field)
|
||||
query.append(STRING_WITH_LEN(","));
|
||||
|
||||
query.append(STRING_WITH_LEN("`"));
|
||||
query.append((*f)->field_name, strlen((*f)->field_name));
|
||||
query.append(STRING_WITH_LEN("`"));
|
||||
append_identifier(thd, &query, (*f)->field_name,
|
||||
strlen((*f)->field_name));
|
||||
}
|
||||
query.append(STRING_WITH_LEN(") "));
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2013, Monty Program Ab.
|
||||
|
||||
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
|
||||
|
@ -1635,6 +1636,7 @@ void st_select_lex::init_query()
|
|||
ref_pointer_array= 0;
|
||||
select_n_where_fields= 0;
|
||||
select_n_having_items= 0;
|
||||
n_child_sum_items= 0;
|
||||
subquery_in_having= explicit_limit= 0;
|
||||
is_item_list_lookup= 0;
|
||||
first_execution= 1;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#ifndef INCLUDES_MYSQL_SQL_LIST_H
|
||||
#define INCLUDES_MYSQL_SQL_LIST_H
|
||||
/*
|
||||
Copyright (c) 2000, 2010, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
|
||||
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
|
||||
|
@ -166,6 +165,14 @@ protected:
|
|||
public:
|
||||
uint elements;
|
||||
|
||||
bool operator==(const base_list &rhs) const
|
||||
{
|
||||
return
|
||||
elements == rhs.elements &&
|
||||
first == rhs.first &&
|
||||
last == rhs.last;
|
||||
}
|
||||
|
||||
inline void empty() { elements=0; first= &end_of_list; last=&first;}
|
||||
inline base_list() { empty(); }
|
||||
/**
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#define TIME_I_S_DECIMAL_SIZE (TIME_FLOAT_DIGITS*100)+(TIME_FLOAT_DIGITS-3)
|
||||
|
||||
#define MAX_QUERY_LENGTH 300
|
||||
#define MAX_QUERY_HISTORY 101
|
||||
|
||||
/**
|
||||
Connects Information_Schema and Profiling.
|
||||
|
@ -253,9 +254,12 @@ void PROF_MEASUREMENT::collect()
|
|||
QUERY_PROFILE::QUERY_PROFILE(PROFILING *profiling_arg, const char *status_arg)
|
||||
:profiling(profiling_arg), profiling_query_id(0), query_source(NULL)
|
||||
{
|
||||
profile_start= new PROF_MEASUREMENT(this, status_arg);
|
||||
entries.push_back(profile_start);
|
||||
profile_end= profile_start;
|
||||
m_seq_counter= 1;
|
||||
PROF_MEASUREMENT *prof= new PROF_MEASUREMENT(this, status_arg);
|
||||
prof->m_seq= m_seq_counter++;
|
||||
m_start_time_usecs= prof->time_usecs;
|
||||
m_end_time_usecs= m_start_time_usecs;
|
||||
entries.push_back(prof);
|
||||
}
|
||||
|
||||
QUERY_PROFILE::~QUERY_PROFILE()
|
||||
|
@ -295,9 +299,14 @@ void QUERY_PROFILE::new_status(const char *status_arg,
|
|||
else
|
||||
prof= new PROF_MEASUREMENT(this, status_arg);
|
||||
|
||||
profile_end= prof;
|
||||
prof->m_seq= m_seq_counter++;
|
||||
m_end_time_usecs= prof->time_usecs;
|
||||
entries.push_back(prof);
|
||||
|
||||
/* Maintain the query history size. */
|
||||
while (entries.elements > MAX_QUERY_HISTORY)
|
||||
delete entries.pop();
|
||||
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
@ -457,8 +466,7 @@ bool PROFILING::show_profiles()
|
|||
|
||||
String elapsed;
|
||||
|
||||
PROF_MEASUREMENT *ps= prof->profile_start;
|
||||
PROF_MEASUREMENT *pe= prof->profile_end;
|
||||
double query_time_usecs= prof->m_end_time_usecs - prof->m_start_time_usecs;
|
||||
|
||||
if (++idx <= unit->offset_limit_cnt)
|
||||
continue;
|
||||
|
@ -467,7 +475,7 @@ bool PROFILING::show_profiles()
|
|||
|
||||
protocol->prepare_for_resend();
|
||||
protocol->store((uint32)(prof->profiling_query_id));
|
||||
protocol->store((double)(pe->time_usecs - ps->time_usecs)/(1000.0*1000),
|
||||
protocol->store((double)(query_time_usecs/(1000.0*1000)),
|
||||
(uint32) TIME_FLOAT_DIGITS-1, &elapsed);
|
||||
if (prof->query_source != NULL)
|
||||
protocol->store(prof->query_source, strlen(prof->query_source),
|
||||
|
@ -527,17 +535,18 @@ int PROFILING::fill_statistics_info(THD *thd_arg, TABLE_LIST *tables, Item *cond
|
|||
us also include a numbering of each state per query. The query_id and
|
||||
the "seq" together are unique.
|
||||
*/
|
||||
ulonglong seq;
|
||||
ulong seq;
|
||||
|
||||
void *entry_iterator;
|
||||
PROF_MEASUREMENT *entry, *previous= NULL;
|
||||
/* ...and for each query, go through all its state-change steps. */
|
||||
for (seq= 0, entry_iterator= query->entries.new_iterator();
|
||||
for (entry_iterator= query->entries.new_iterator();
|
||||
entry_iterator != NULL;
|
||||
entry_iterator= query->entries.iterator_next(entry_iterator),
|
||||
seq++, previous=entry, row_number++)
|
||||
previous=entry, row_number++)
|
||||
{
|
||||
entry= query->entries.iterator_value(entry_iterator);
|
||||
seq= entry->m_seq;
|
||||
|
||||
/* Skip the first. We count spans of fence, not fence-posts. */
|
||||
if (previous == NULL) continue;
|
||||
|
|
|
@ -182,6 +182,7 @@ private:
|
|||
char *file;
|
||||
unsigned int line;
|
||||
|
||||
ulong m_seq;
|
||||
double time_usecs;
|
||||
char *allocated_status_memory;
|
||||
|
||||
|
@ -213,8 +214,9 @@ private:
|
|||
query_id_t profiling_query_id; /* Session-specific id. */
|
||||
char *query_source;
|
||||
|
||||
PROF_MEASUREMENT *profile_start;
|
||||
PROF_MEASUREMENT *profile_end;
|
||||
double m_start_time_usecs;
|
||||
double m_end_time_usecs;
|
||||
ulong m_seq_counter;
|
||||
Queue<PROF_MEASUREMENT> entries;
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Copyright (c) 2000, 2010 Oracle and/or its affiliates.
|
||||
2009-2011 Monty Program Ab
|
||||
/* Copyright (c) 2000, 2012 Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2013 Monty Program Ab.
|
||||
|
||||
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
|
||||
|
@ -1917,6 +1917,8 @@ bool JOIN::setup_subquery_caches()
|
|||
*/
|
||||
void JOIN::restore_tmp()
|
||||
{
|
||||
DBUG_PRINT("info", ("restore_tmp this %p tmp_join %p", this, tmp_join));
|
||||
DBUG_ASSERT(tmp_join != this);
|
||||
memcpy(tmp_join, this, (size_t) sizeof(JOIN));
|
||||
}
|
||||
|
||||
|
@ -10421,21 +10423,19 @@ void JOIN::cleanup(bool full)
|
|||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
We are not using tables anymore
|
||||
Unlock all tables. We may be in an INSERT .... SELECT statement.
|
||||
*/
|
||||
if (full)
|
||||
{
|
||||
if (tmp_join)
|
||||
tmp_table_param.copy_field= 0;
|
||||
group_fields.delete_elements();
|
||||
/*
|
||||
Ensure that the above delete_elements() would not be called
|
||||
Ensure that the following delete_elements() would not be called
|
||||
twice for the same list.
|
||||
*/
|
||||
if (tmp_join && tmp_join != this)
|
||||
tmp_join->group_fields= group_fields;
|
||||
if (tmp_join && tmp_join != this &&
|
||||
tmp_join->group_fields == this->group_fields)
|
||||
tmp_join->group_fields.empty();
|
||||
|
||||
// Run Cached_item DTORs!
|
||||
group_fields.delete_elements();
|
||||
|
||||
/*
|
||||
We can't call delete_elements() on copy_funcs as this will cause
|
||||
problems in free_elements() as some of the elements are then deleted.
|
||||
|
|
|
@ -2377,21 +2377,22 @@ btr_cur_del_mark_set_sec_rec(
|
|||
}
|
||||
|
||||
/***************************************************************
|
||||
Sets a secondary index record delete mark to FALSE. This function is only
|
||||
Sets a secondary index record delete mark. This function is only
|
||||
used by the insert buffer insert merge mechanism. */
|
||||
|
||||
void
|
||||
btr_cur_del_unmark_for_ibuf(
|
||||
/*========================*/
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
/*==============================*/
|
||||
rec_t* rec, /* in: record to delete unmark */
|
||||
ibool val, /* in: value to set */
|
||||
mtr_t* mtr) /* in: mtr */
|
||||
{
|
||||
/* We do not need to reserve btr_search_latch, as the page has just
|
||||
been read to the buffer pool and there cannot be a hash index to it. */
|
||||
|
||||
rec_set_deleted_flag(rec, page_is_comp(buf_frame_align(rec)), FALSE);
|
||||
rec_set_deleted_flag(rec, page_is_comp(buf_frame_align(rec)), val);
|
||||
|
||||
btr_cur_del_mark_set_sec_rec_log(rec, FALSE, mtr);
|
||||
btr_cur_del_mark_set_sec_rec_log(rec, val, mtr);
|
||||
}
|
||||
|
||||
/*==================== B-TREE RECORD REMOVE =========================*/
|
||||
|
|
|
@ -1629,7 +1629,6 @@ dict_index_build_internal_clust(
|
|||
{
|
||||
dict_index_t* new_index;
|
||||
dict_field_t* field;
|
||||
ulint fixed_size;
|
||||
ulint trx_id_pos;
|
||||
ulint i;
|
||||
ibool* indexed;
|
||||
|
@ -1706,7 +1705,7 @@ dict_index_build_internal_clust(
|
|||
|
||||
for (i = 0; i < trx_id_pos; i++) {
|
||||
|
||||
fixed_size = dict_col_get_fixed_size(
|
||||
ulint fixed_size = dict_col_get_fixed_size(
|
||||
dict_index_get_nth_col(new_index, i));
|
||||
|
||||
if (fixed_size == 0) {
|
||||
|
@ -1722,7 +1721,20 @@ dict_index_build_internal_clust(
|
|||
break;
|
||||
}
|
||||
|
||||
new_index->trx_id_offset += (unsigned int) fixed_size;
|
||||
/* Add fixed_size to new_index->trx_id_offset.
|
||||
Because the latter is a bit-field, an overflow
|
||||
can theoretically occur. Check for it. */
|
||||
fixed_size += new_index->trx_id_offset;
|
||||
|
||||
new_index->trx_id_offset = fixed_size;
|
||||
|
||||
if (new_index->trx_id_offset != fixed_size) {
|
||||
/* Overflow. Pretend that this is a
|
||||
variable-length PRIMARY KEY. */
|
||||
ut_ad(0);
|
||||
new_index->trx_id_offset = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9262,8 +9262,8 @@ static MYSQL_SYSVAR_ENUM(stats_method, srv_innodb_stats_method,
|
|||
#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG
|
||||
static MYSQL_SYSVAR_UINT(change_buffering_debug, ibuf_debug,
|
||||
PLUGIN_VAR_RQCMDARG,
|
||||
"Debug flags for InnoDB change buffering (0=none)",
|
||||
NULL, NULL, 0, 0, 1, 0);
|
||||
"Debug flags for InnoDB change buffering (0=none, 2=crash at merge)",
|
||||
NULL, NULL, 0, 0, 2, 0);
|
||||
#endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */
|
||||
|
||||
#ifdef UNIV_DEBUG
|
||||
|
|
|
@ -2978,7 +2978,7 @@ dump:
|
|||
/* The records only differ in the delete-mark.
|
||||
Clear the delete-mark, like we did before
|
||||
Bug #56680 was fixed. */
|
||||
btr_cur_del_unmark_for_ibuf(rec, mtr);
|
||||
btr_cur_set_deleted_flag_for_ibuf(rec, FALSE, mtr);
|
||||
updated_in_place:
|
||||
mem_heap_free(heap);
|
||||
return;
|
||||
|
@ -3058,6 +3058,22 @@ ibuf_delete_rec(
|
|||
|
||||
ut_ad(ibuf_inside());
|
||||
|
||||
#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG
|
||||
if (ibuf_debug == 2) {
|
||||
/* Inject a fault (crash). We do this before trying
|
||||
optimistic delete, because a pessimistic delete in the
|
||||
change buffer would require a larger test case. */
|
||||
|
||||
/* Flag the buffered record as processed, to avoid
|
||||
an assertion failure after crash recovery. */
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
btr_pcur_get_rec(pcur), TRUE, mtr);
|
||||
mtr_commit(mtr);
|
||||
log_make_checkpoint_at(ut_dulint_max, TRUE);
|
||||
DBUG_SUICIDE();
|
||||
}
|
||||
#endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */
|
||||
|
||||
success = btr_cur_optimistic_delete(btr_pcur_get_btr_cur(pcur), mtr);
|
||||
|
||||
if (success) {
|
||||
|
@ -3072,7 +3088,13 @@ ibuf_delete_rec(
|
|||
return(FALSE);
|
||||
}
|
||||
|
||||
/* We have to resort to a pessimistic delete from ibuf */
|
||||
/* We have to resort to a pessimistic delete from ibuf.
|
||||
Delete-mark the record so that it will not be applied again,
|
||||
in case the server crashes before the pessimistic delete is
|
||||
made persistent. */
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
btr_pcur_get_rec(pcur), TRUE, mtr);
|
||||
|
||||
btr_pcur_store_position(pcur, mtr);
|
||||
|
||||
btr_pcur_commit_specify_mtr(pcur, mtr);
|
||||
|
@ -3343,7 +3365,7 @@ loop:
|
|||
fputs("InnoDB: Discarding record\n ", stderr);
|
||||
rec_print_old(stderr, ibuf_rec);
|
||||
fputs("\n from the insert buffer!\n\n", stderr);
|
||||
} else if (page) {
|
||||
} else if (page && !rec_get_deleted_flag(ibuf_rec, 0)) {
|
||||
/* Now we have at pcur a record which should be
|
||||
inserted to the index page; NOTE that the call below
|
||||
copies pointers to fields in ibuf_rec, and we must
|
||||
|
|
|
@ -277,13 +277,14 @@ btr_cur_del_mark_set_sec_rec(
|
|||
que_thr_t* thr, /* in: query thread */
|
||||
mtr_t* mtr); /* in: mtr */
|
||||
/***************************************************************
|
||||
Sets a secondary index record delete mark to FALSE. This function is
|
||||
only used by the insert buffer insert merge mechanism. */
|
||||
Sets a secondary index record delete mark. This function is only
|
||||
used by the insert buffer insert merge mechanism. */
|
||||
|
||||
void
|
||||
btr_cur_del_unmark_for_ibuf(
|
||||
/*========================*/
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
/*==============================*/
|
||||
rec_t* rec, /* in: record to delete unmark */
|
||||
ibool val, /* in: value to set */
|
||||
mtr_t* mtr); /* in: mtr */
|
||||
/*****************************************************************
|
||||
Tries to compress a page of the tree on the leaf level. It is assumed
|
||||
|
|
|
@ -196,10 +196,15 @@ struct dict_index_struct{
|
|||
unsigned space:32;
|
||||
/* space where the index tree is placed */
|
||||
unsigned page:32;/* index tree root page number */
|
||||
unsigned trx_id_offset:10;/* position of the the trx id column
|
||||
#define MAX_KEY_LENGTH_BITS 12
|
||||
unsigned trx_id_offset:MAX_KEY_LENGTH_BITS;
|
||||
/* position of the trx id column
|
||||
in a clustered index record, if the fields
|
||||
before it are known to be of a fixed size,
|
||||
0 otherwise */
|
||||
#if (1<<MAX_KEY_LENGTH_BITS) < MAX_KEY_LENGTH
|
||||
# error (1<<MAX_KEY_LENGTH_BITS) < MAX_KEY_LENGTH
|
||||
#endif
|
||||
unsigned n_user_defined_cols:10;
|
||||
/* number of columns the user defined to
|
||||
be in the index: in the internal
|
||||
|
|
|
@ -78,8 +78,6 @@ struct undo_node_struct{
|
|||
dulint undo_no;/* undo number of the record */
|
||||
ulint rec_type;/* undo log record type: TRX_UNDO_INSERT_REC,
|
||||
... */
|
||||
dulint new_roll_ptr; /* roll ptr to restore to clustered index
|
||||
record */
|
||||
dulint new_trx_id; /* trx id to restore to clustered index
|
||||
record */
|
||||
btr_pcur_t pcur; /* persistent cursor used in searching the
|
||||
|
@ -101,11 +99,8 @@ struct undo_node_struct{
|
|||
/* Execution states for an undo node */
|
||||
#define UNDO_NODE_FETCH_NEXT 1 /* we should fetch the next undo log
|
||||
record */
|
||||
#define UNDO_NODE_PREV_VERS 2 /* the roll ptr to previous version of
|
||||
a row is stored in node, and undo
|
||||
should be done based on it */
|
||||
#define UNDO_NODE_INSERT 3
|
||||
#define UNDO_NODE_MODIFY 4
|
||||
#define UNDO_NODE_INSERT 2
|
||||
#define UNDO_NODE_MODIFY 3
|
||||
|
||||
|
||||
#ifndef UNIV_NONINL
|
||||
|
|
|
@ -1215,6 +1215,14 @@ os_file_create(
|
|||
DWORD create_flag;
|
||||
DWORD attributes;
|
||||
ibool retry;
|
||||
|
||||
DBUG_EXECUTE_IF(
|
||||
"ib_create_table_fail_disk_full",
|
||||
*success = FALSE;
|
||||
SetLastError(ERROR_DISK_FULL);
|
||||
return((os_file_t) -1);
|
||||
);
|
||||
|
||||
try_again:
|
||||
ut_a(name);
|
||||
|
||||
|
@ -1318,6 +1326,13 @@ try_again:
|
|||
ibool retry;
|
||||
const char* mode_str = NULL;
|
||||
|
||||
DBUG_EXECUTE_IF(
|
||||
"ib_create_table_fail_disk_full",
|
||||
*success = FALSE;
|
||||
errno = ENOSPC;
|
||||
return((os_file_t) -1);
|
||||
);
|
||||
|
||||
try_again:
|
||||
ut_a(name);
|
||||
|
||||
|
|
|
@ -3758,9 +3758,13 @@ wait_table_again:
|
|||
}
|
||||
|
||||
rec_loop:
|
||||
if (trx_is_interrupted(trx)) {
|
||||
err = DB_INTERRUPTED;
|
||||
goto normal_return;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------*/
|
||||
/* PHASE 4: Look for matching records in a loop */
|
||||
|
||||
rec = btr_pcur_get_rec(pcur);
|
||||
ut_ad(!!page_rec_is_comp(rec) == comp);
|
||||
#ifdef UNIV_SEARCH_DEBUG
|
||||
|
@ -4656,14 +4660,18 @@ row_search_autoinc_read_column(
|
|||
/* TODO: We have to cast away the const of rec for now. This needs
|
||||
to be fixed later.*/
|
||||
offsets = rec_get_offsets(
|
||||
(rec_t*) rec, index, offsets, ULINT_UNDEFINED, &heap);
|
||||
(rec_t*) rec, index, offsets, col_no + 1, &heap);
|
||||
|
||||
if (rec_offs_nth_sql_null(offsets, col_no)) {
|
||||
/* There is no non-NULL value in the auto-increment column. */
|
||||
value = 0;
|
||||
goto func_exit;
|
||||
}
|
||||
|
||||
/* TODO: We have to cast away the const of rec for now. This needs
|
||||
to be fixed later.*/
|
||||
data = rec_get_nth_field((rec_t*)rec, offsets, col_no, &len);
|
||||
|
||||
ut_a(len != UNIV_SQL_NULL);
|
||||
|
||||
switch (mtype) {
|
||||
case DATA_INT:
|
||||
ut_a(len <= sizeof value);
|
||||
|
@ -4684,15 +4692,16 @@ row_search_autoinc_read_column(
|
|||
ut_error;
|
||||
}
|
||||
|
||||
if (UNIV_LIKELY_NULL(heap)) {
|
||||
mem_heap_free(heap);
|
||||
}
|
||||
|
||||
/* We assume that the autoinc counter can't be negative. */
|
||||
if (!unsigned_type && (ib_longlong) value < 0) {
|
||||
value = 0;
|
||||
}
|
||||
|
||||
func_exit:
|
||||
if (UNIV_LIKELY_NULL(heap)) {
|
||||
mem_heap_free(heap);
|
||||
}
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,37 +41,6 @@ delete marked clustered index record was delete unmarked and possibly also
|
|||
some of its fields were changed. Now, it is possible that the delete marked
|
||||
version has become obsolete at the time the undo is started. */
|
||||
|
||||
/***************************************************************
|
||||
Checks if also the previous version of the clustered index record was
|
||||
modified or inserted by the same transaction, and its undo number is such
|
||||
that it should be undone in the same rollback. */
|
||||
UNIV_INLINE
|
||||
ibool
|
||||
row_undo_mod_undo_also_prev_vers(
|
||||
/*=============================*/
|
||||
/* out: TRUE if also previous modify or
|
||||
insert of this row should be undone */
|
||||
undo_node_t* node, /* in: row undo node */
|
||||
dulint* undo_no)/* out: the undo number */
|
||||
{
|
||||
trx_undo_rec_t* undo_rec;
|
||||
trx_t* trx;
|
||||
|
||||
trx = node->trx;
|
||||
|
||||
if (0 != ut_dulint_cmp(node->new_trx_id, trx->id)) {
|
||||
|
||||
*undo_no = ut_dulint_zero;
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
undo_rec = trx_undo_get_undo_rec_low(node->new_roll_ptr, node->heap);
|
||||
|
||||
*undo_no = trx_undo_rec_get_undo_no(undo_rec);
|
||||
|
||||
return(ut_dulint_cmp(trx->roll_limit, *undo_no) <= 0);
|
||||
}
|
||||
|
||||
/***************************************************************
|
||||
Undoes a modify in a clustered index record. */
|
||||
static
|
||||
|
@ -202,17 +171,9 @@ row_undo_mod_clust(
|
|||
btr_pcur_t* pcur;
|
||||
mtr_t mtr;
|
||||
ulint err;
|
||||
ibool success;
|
||||
ibool more_vers;
|
||||
dulint new_undo_no;
|
||||
|
||||
ut_ad(node && thr);
|
||||
|
||||
/* Check if also the previous version of the clustered index record
|
||||
should be undone in this same rollback operation */
|
||||
|
||||
more_vers = row_undo_mod_undo_also_prev_vers(node, &new_undo_no);
|
||||
|
||||
pcur = &(node->pcur);
|
||||
|
||||
mtr_start(&mtr);
|
||||
|
@ -260,20 +221,6 @@ row_undo_mod_clust(
|
|||
|
||||
trx_undo_rec_release(node->trx, node->undo_no);
|
||||
|
||||
if (more_vers && err == DB_SUCCESS) {
|
||||
|
||||
/* Reserve the undo log record to the prior version after
|
||||
committing &mtr: this is necessary to comply with the latching
|
||||
order, as &mtr may contain the fsp latch which is lower in
|
||||
the latch hierarchy than trx->undo_mutex. */
|
||||
|
||||
success = trx_undo_rec_reserve(node->trx, new_undo_no);
|
||||
|
||||
if (success) {
|
||||
node->state = UNDO_NODE_PREV_VERS;
|
||||
}
|
||||
}
|
||||
|
||||
return(err);
|
||||
}
|
||||
|
||||
|
@ -702,7 +649,6 @@ row_undo_mod_parse_undo_rec(
|
|||
trx_undo_update_rec_get_update(ptr, clust_index, type, trx_id,
|
||||
roll_ptr, info_bits, trx,
|
||||
node->heap, &(node->update));
|
||||
node->new_roll_ptr = roll_ptr;
|
||||
node->new_trx_id = trx_id;
|
||||
node->cmpl_info = cmpl_info;
|
||||
}
|
||||
|
|
|
@ -236,25 +236,6 @@ row_undo(
|
|||
node->roll_ptr = roll_ptr;
|
||||
node->undo_no = trx_undo_rec_get_undo_no(node->undo_rec);
|
||||
|
||||
if (trx_undo_roll_ptr_is_insert(roll_ptr)) {
|
||||
|
||||
node->state = UNDO_NODE_INSERT;
|
||||
} else {
|
||||
node->state = UNDO_NODE_MODIFY;
|
||||
}
|
||||
|
||||
} else if (node->state == UNDO_NODE_PREV_VERS) {
|
||||
|
||||
/* Undo should be done to the same clustered index record
|
||||
again in this same rollback, restoring the previous version */
|
||||
|
||||
roll_ptr = node->new_roll_ptr;
|
||||
|
||||
node->undo_rec = trx_undo_get_undo_rec_low(roll_ptr,
|
||||
node->heap);
|
||||
node->roll_ptr = roll_ptr;
|
||||
node->undo_no = trx_undo_rec_get_undo_no(node->undo_rec);
|
||||
|
||||
if (trx_undo_roll_ptr_is_insert(roll_ptr)) {
|
||||
|
||||
node->state = UNDO_NODE_INSERT;
|
||||
|
|
|
@ -1,3 +1,40 @@
|
|||
2012-10-18 The InnoDB Team
|
||||
|
||||
* row/row0sel.c:
|
||||
Fix Bug#14758405: ALTER TABLE: ADDING SERIAL NULL DATATYPE: ASSERTION:
|
||||
LEN <= SIZEOF(ULONGLONG)
|
||||
|
||||
2012-10-16 The InnoDB Team
|
||||
|
||||
* dict/dict0dict.c, handler/handler0alter.cc, include/dict0dict.h:
|
||||
Fix Bug#14729221 IN-PLACE ALTER TABLE REPORTS '' INSTEAD OF REAL
|
||||
DUPLICATE VALUE FOR PREFIX KEYS
|
||||
|
||||
2012-10-09 The InnoDB Team
|
||||
|
||||
* row/row0mysql.c:
|
||||
Fix Bug#14708715 CREATE TABLE MEMORY LEAK ON DB_OUT_OF_FILE_SPACE
|
||||
|
||||
2012-09-28 The InnoDB Team
|
||||
|
||||
* include/row0undo.h, row/row0umod.c, row/row0undo.c:
|
||||
Fix Bug#13249921 ASSERT !BPAGE->FILE_PAGE_WAS_FREED, USUALLY
|
||||
IN TRANSACTION ROLLBACK. This patch will ensure that the
|
||||
undo logs will be applied in proper reverse order.
|
||||
|
||||
2012-09-18 The InnoDB Team
|
||||
|
||||
* btr/btr0cur.c, handler/ha_innodb.cc, ibuf/ibuf0ibuf.c,
|
||||
include/btr0cur.h:
|
||||
Fix Bug#14636528 INNODB CHANGE BUFFERING IS NOT ENTIRELY CRASH-SAFE
|
||||
|
||||
2012-09-17 The InnoDB Team
|
||||
|
||||
* btr/btr0btr.c, btr/btr0cur.c, buf/buf0lru.c,
|
||||
include/page0zip.h, log/log0recv.c, page/page0cur.c,
|
||||
page/page0page.c, page/page0zip.c:
|
||||
Fix Bug#12701488 ASSERT PAGE_ZIP_VALIDATE, UNIV_ZIP_DEBUG
|
||||
|
||||
2012-08-29 The InnoDB Team
|
||||
|
||||
* btr/btr0btr.c, page/page0cur.c, page/page0page.c:
|
||||
|
|
|
@ -1573,7 +1573,7 @@ btr_page_reorganize_low(
|
|||
ut_ad(mtr_memo_contains(mtr, block, MTR_MEMO_PAGE_X_FIX));
|
||||
ut_ad(!!page_is_comp(page) == dict_table_is_comp(index->table));
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
data_size1 = page_get_data_size(page);
|
||||
max_ins_size1 = page_get_max_insert_size_after_reorganize(page, 1);
|
||||
|
@ -1691,7 +1691,7 @@ btr_page_reorganize_low(
|
|||
|
||||
func_exit:
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
#ifndef UNIV_HOTBACKUP
|
||||
buf_block_free(temp_block);
|
||||
|
@ -1766,7 +1766,7 @@ btr_page_empty(
|
|||
ut_ad(mtr_memo_contains(mtr, block, MTR_MEMO_PAGE_X_FIX));
|
||||
ut_ad(page_zip == buf_block_get_page_zip(block));
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
btr_search_drop_page_hash_index(block);
|
||||
|
@ -1823,10 +1823,10 @@ btr_root_raise_and_insert(
|
|||
root_block = btr_cur_get_block(cursor);
|
||||
root_page_zip = buf_block_get_page_zip(root_block);
|
||||
ut_ad(page_get_n_recs(root) > 0);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!root_page_zip || page_zip_validate(root_page_zip, root));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
index = btr_cur_get_index(cursor);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!root_page_zip || page_zip_validate(root_page_zip, root, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
#ifdef UNIV_BTR_DEBUG
|
||||
if (!dict_index_is_ibuf(index)) {
|
||||
ulint space = dict_index_get_space(index);
|
||||
|
@ -2756,8 +2756,8 @@ insert_empty:
|
|||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
if (UNIV_LIKELY_NULL(page_zip)) {
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(new_page_zip, new_page));
|
||||
ut_a(page_zip_validate(page_zip, page, cursor->index));
|
||||
ut_a(page_zip_validate(new_page_zip, new_page, cursor->index));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
|
@ -2791,7 +2791,8 @@ insert_empty:
|
|||
= buf_block_get_page_zip(insert_block);
|
||||
|
||||
ut_a(!insert_page_zip
|
||||
|| page_zip_validate(insert_page_zip, insert_page));
|
||||
|| page_zip_validate(insert_page_zip, insert_page,
|
||||
cursor->index));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
|
@ -3156,7 +3157,7 @@ btr_lift_page_up(
|
|||
|
||||
btr_page_set_level(page, page_zip, page_level, mtr);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
@ -3332,8 +3333,8 @@ err_exit:
|
|||
const page_zip_des_t* page_zip
|
||||
= buf_block_get_page_zip(block);
|
||||
ut_a(page_zip);
|
||||
ut_a(page_zip_validate(merge_page_zip, merge_page));
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(merge_page_zip, merge_page, index));
|
||||
ut_a(page_zip_validate(page_zip, page, index));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
|
@ -3466,7 +3467,8 @@ err_exit:
|
|||
|
||||
ut_ad(page_validate(merge_page, index));
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!merge_page_zip || page_zip_validate(merge_page_zip, merge_page));
|
||||
ut_a(!merge_page_zip || page_zip_validate(merge_page_zip, merge_page,
|
||||
index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
/* Free the file page */
|
||||
|
@ -3649,7 +3651,7 @@ btr_discard_page(
|
|||
page_zip_des_t* merge_page_zip
|
||||
= buf_block_get_page_zip(merge_block);
|
||||
ut_a(!merge_page_zip
|
||||
|| page_zip_validate(merge_page_zip, merge_page));
|
||||
|| page_zip_validate(merge_page_zip, merge_page, index));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
|
@ -4126,7 +4128,7 @@ btr_validate_level(
|
|||
ut_a(space == page_get_space_id(page));
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
page_zip = buf_block_get_page_zip(block);
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
ut_a(!page_is_leaf(page));
|
||||
|
||||
|
@ -4154,7 +4156,7 @@ loop:
|
|||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
page_zip = buf_block_get_page_zip(block);
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
/* Check ordering etc. of records */
|
||||
|
|
|
@ -578,7 +578,8 @@ retry_page_get:
|
|||
#ifdef UNIV_ZIP_DEBUG
|
||||
const page_zip_des_t* page_zip
|
||||
= buf_block_get_page_zip(block);
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip
|
||||
|| page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
buf_block_dbg_add_level(
|
||||
|
@ -1939,7 +1940,7 @@ any_extern:
|
|||
|
||||
page_zip = buf_block_get_page_zip(block);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
if (page_zip
|
||||
|
@ -2148,7 +2149,7 @@ btr_cur_pessimistic_update(
|
|||
MTR_MEMO_X_LOCK));
|
||||
ut_ad(mtr_memo_contains(mtr, block, MTR_MEMO_PAGE_X_FIX));
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
/* The insert buffer tree should never be updated in place. */
|
||||
ut_ad(!dict_index_is_ibuf(index));
|
||||
|
@ -2286,7 +2287,7 @@ make_external:
|
|||
btr_search_update_hash_on_delete(cursor);
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
page_cursor = btr_cur_get_page_cur(cursor);
|
||||
|
||||
|
@ -2393,7 +2394,7 @@ make_external:
|
|||
buf_block_t* rec_block = btr_cur_get_block(cursor);
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
page = buf_block_get_frame(rec_block);
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
page_zip = buf_block_get_page_zip(rec_block);
|
||||
|
@ -2419,7 +2420,7 @@ make_external:
|
|||
|
||||
return_after_reservations:
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
if (n_extents > 0) {
|
||||
|
@ -2768,19 +2769,20 @@ btr_cur_del_mark_set_sec_rec(
|
|||
return(DB_SUCCESS);
|
||||
}
|
||||
|
||||
/***********************************************************//**
|
||||
Clear a secondary index record's delete mark. This function is only
|
||||
/***************************************************************
|
||||
Sets a secondary index record delete mark. This function is only
|
||||
used by the insert buffer insert merge mechanism. */
|
||||
UNIV_INTERN
|
||||
void
|
||||
btr_cur_del_unmark_for_ibuf(
|
||||
/*========================*/
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
/*==============================*/
|
||||
rec_t* rec, /*!< in/out: record to delete unmark */
|
||||
page_zip_des_t* page_zip, /*!< in/out: compressed page
|
||||
corresponding to rec, or NULL
|
||||
when the tablespace is
|
||||
uncompressed */
|
||||
mtr_t* mtr) /*!< in: mtr */
|
||||
ibool val, /*!< in: value to set */
|
||||
mtr_t* mtr) /*!< in/out: mini-transaction */
|
||||
{
|
||||
/* We do not need to reserve btr_search_latch, as the page
|
||||
has just been read to the buffer pool and there cannot be
|
||||
|
@ -2788,9 +2790,9 @@ btr_cur_del_unmark_for_ibuf(
|
|||
updated in place and the adaptive hash index does not depend
|
||||
on it. */
|
||||
|
||||
btr_rec_set_deleted_flag(rec, page_zip, FALSE);
|
||||
btr_rec_set_deleted_flag(rec, page_zip, val);
|
||||
|
||||
btr_cur_del_mark_set_sec_rec_log(rec, FALSE, mtr);
|
||||
btr_cur_del_mark_set_sec_rec_log(rec, val, mtr);
|
||||
}
|
||||
|
||||
/*==================== B-TREE RECORD REMOVE =========================*/
|
||||
|
@ -2880,12 +2882,14 @@ btr_cur_optimistic_delete(
|
|||
page, 1);
|
||||
}
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip
|
||||
|| page_zip_validate(page_zip, page, cursor->index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
page_cur_delete_rec(btr_cur_get_page_cur(cursor),
|
||||
cursor->index, offsets, mtr);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip
|
||||
|| page_zip_validate(page_zip, page, cursor->index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
if (dict_index_is_clust(cursor->index)
|
||||
|
@ -2980,7 +2984,7 @@ btr_cur_pessimistic_delete(
|
|||
rec = btr_cur_get_rec(cursor);
|
||||
page_zip = buf_block_get_page_zip(block);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
offsets = rec_get_offsets(rec, index, NULL, ULINT_UNDEFINED, &heap);
|
||||
|
@ -2990,7 +2994,7 @@ btr_cur_pessimistic_delete(
|
|||
rec, offsets, page_zip,
|
||||
rb_ctx, mtr);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
@ -3051,7 +3055,7 @@ btr_cur_pessimistic_delete(
|
|||
|
||||
page_cur_delete_rec(btr_cur_get_page_cur(cursor), index, offsets, mtr);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
ut_ad(btr_check_node_ptr(index, block, mtr));
|
||||
|
|
|
@ -241,7 +241,7 @@ the read requests for the whole area.
|
|||
|
||||
#ifndef UNIV_HOTBACKUP
|
||||
/** Value in microseconds */
|
||||
static const int WAIT_FOR_READ = 5000;
|
||||
static const int WAIT_FOR_READ = 100;
|
||||
/** Number of attemtps made to read in a page in the buffer pool */
|
||||
static const ulint BUF_PAGE_READ_MAX_RETRIES = 100;
|
||||
|
||||
|
@ -1897,8 +1897,9 @@ wait_until_unfixed:
|
|||
mutex_exit(&block->mutex);
|
||||
|
||||
if (io_fix == BUF_IO_READ) {
|
||||
|
||||
os_thread_sleep(WAIT_FOR_READ);
|
||||
/* wait by temporaly s-latch */
|
||||
rw_lock_s_lock(&(block->lock));
|
||||
rw_lock_s_unlock(&(block->lock));
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1642,7 +1642,9 @@ buf_LRU_block_remove_hashed_page(
|
|||
break;
|
||||
case FIL_PAGE_INDEX:
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(&bpage->zip, page));
|
||||
ut_a(page_zip_validate(
|
||||
&bpage->zip, page,
|
||||
((buf_block_t*) bpage)->index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1996, 2011, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 1996, 2012, Oracle and/or its affiliates. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
@ -473,10 +473,12 @@ Looks for column n in an index.
|
|||
ULINT_UNDEFINED if not contained */
|
||||
UNIV_INTERN
|
||||
ulint
|
||||
dict_index_get_nth_col_pos(
|
||||
/*=======================*/
|
||||
const dict_index_t* index, /*!< in: index */
|
||||
ulint n) /*!< in: column number */
|
||||
dict_index_get_nth_col_or_prefix_pos(
|
||||
/*=================================*/
|
||||
const dict_index_t* index, /*!< in: index */
|
||||
ulint n, /*!< in: column number */
|
||||
ibool inc_prefix) /*!< in: TRUE=consider
|
||||
column prefixes too */
|
||||
{
|
||||
const dict_field_t* field;
|
||||
const dict_col_t* col;
|
||||
|
@ -498,7 +500,8 @@ dict_index_get_nth_col_pos(
|
|||
for (pos = 0; pos < n_fields; pos++) {
|
||||
field = dict_index_get_nth_field(index, pos);
|
||||
|
||||
if (col == field->col && field->prefix_len == 0) {
|
||||
if (col == field->col
|
||||
&& (inc_prefix || field->prefix_len == 0)) {
|
||||
|
||||
return(pos);
|
||||
}
|
||||
|
@ -507,6 +510,20 @@ dict_index_get_nth_col_pos(
|
|||
return(ULINT_UNDEFINED);
|
||||
}
|
||||
|
||||
/********************************************************************//**
|
||||
Looks for column n in an index.
|
||||
@return position in internal representation of the index;
|
||||
ULINT_UNDEFINED if not contained */
|
||||
UNIV_INTERN
|
||||
ulint
|
||||
dict_index_get_nth_col_pos(
|
||||
/*=======================*/
|
||||
const dict_index_t* index, /*!< in: index */
|
||||
ulint n) /*!< in: column number */
|
||||
{
|
||||
return(dict_index_get_nth_col_or_prefix_pos(index, n, FALSE));
|
||||
}
|
||||
|
||||
#ifndef UNIV_HOTBACKUP
|
||||
/********************************************************************//**
|
||||
Returns TRUE if the index contains a column or a prefix of that column.
|
||||
|
@ -1959,7 +1976,6 @@ dict_index_build_internal_clust(
|
|||
{
|
||||
dict_index_t* new_index;
|
||||
dict_field_t* field;
|
||||
ulint fixed_size;
|
||||
ulint trx_id_pos;
|
||||
ulint i;
|
||||
ibool* indexed;
|
||||
|
@ -2036,7 +2052,7 @@ dict_index_build_internal_clust(
|
|||
|
||||
for (i = 0; i < trx_id_pos; i++) {
|
||||
|
||||
fixed_size = dict_col_get_fixed_size(
|
||||
ulint fixed_size = dict_col_get_fixed_size(
|
||||
dict_index_get_nth_col(new_index, i),
|
||||
dict_table_is_comp(table));
|
||||
|
||||
|
@ -2053,7 +2069,20 @@ dict_index_build_internal_clust(
|
|||
break;
|
||||
}
|
||||
|
||||
new_index->trx_id_offset += (unsigned int) fixed_size;
|
||||
/* Add fixed_size to new_index->trx_id_offset.
|
||||
Because the latter is a bit-field, an overflow
|
||||
can theoretically occur. Check for it. */
|
||||
fixed_size += new_index->trx_id_offset;
|
||||
|
||||
new_index->trx_id_offset = fixed_size;
|
||||
|
||||
if (new_index->trx_id_offset != fixed_size) {
|
||||
/* Overflow. Pretend that this is a
|
||||
variable-length PRIMARY KEY. */
|
||||
ut_ad(0);
|
||||
new_index->trx_id_offset = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11237,8 +11237,8 @@ static MYSQL_SYSVAR_ENUM(stats_method, srv_innodb_stats_method,
|
|||
#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG
|
||||
static MYSQL_SYSVAR_UINT(change_buffering_debug, ibuf_debug,
|
||||
PLUGIN_VAR_RQCMDARG,
|
||||
"Debug flags for InnoDB change buffering (0=none)",
|
||||
NULL, NULL, 0, 0, 1, 0);
|
||||
"Debug flags for InnoDB change buffering (0=none, 2=crash at merge)",
|
||||
NULL, NULL, 0, 0, 2, 0);
|
||||
#endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */
|
||||
|
||||
static MYSQL_SYSVAR_BOOL(random_read_ahead, srv_random_read_ahead,
|
||||
|
|
|
@ -108,13 +108,17 @@ innobase_col_to_mysql(
|
|||
/* These column types should never be shipped to MySQL. */
|
||||
ut_ad(0);
|
||||
|
||||
case DATA_CHAR:
|
||||
case DATA_FIXBINARY:
|
||||
case DATA_FLOAT:
|
||||
case DATA_DOUBLE:
|
||||
case DATA_DECIMAL:
|
||||
/* Above are the valid column types for MySQL data. */
|
||||
ut_ad(flen == len);
|
||||
/* fall through */
|
||||
case DATA_CHAR:
|
||||
/* We may have flen > len when there is a shorter
|
||||
prefix on a CHAR column. */
|
||||
ut_ad(flen >= len);
|
||||
#else /* UNIV_DEBUG */
|
||||
default:
|
||||
#endif /* UNIV_DEBUG */
|
||||
|
@ -147,7 +151,7 @@ innobase_rec_to_mysql(
|
|||
|
||||
field->reset();
|
||||
|
||||
ipos = dict_index_get_nth_col_pos(index, i);
|
||||
ipos = dict_index_get_nth_col_or_prefix_pos(index, i, TRUE);
|
||||
|
||||
if (UNIV_UNLIKELY(ipos == ULINT_UNDEFINED)) {
|
||||
null_field:
|
||||
|
|
|
@ -3042,7 +3042,8 @@ dump:
|
|||
/* The records only differ in the delete-mark.
|
||||
Clear the delete-mark, like we did before
|
||||
Bug #56680 was fixed. */
|
||||
btr_cur_del_unmark_for_ibuf(rec, page_zip, mtr);
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
rec, page_zip, FALSE, mtr);
|
||||
updated_in_place:
|
||||
mem_heap_free(heap);
|
||||
return;
|
||||
|
@ -3127,6 +3128,22 @@ ibuf_delete_rec(
|
|||
ut_ad(ibuf_rec_get_page_no(btr_pcur_get_rec(pcur)) == page_no);
|
||||
ut_ad(ibuf_rec_get_space(btr_pcur_get_rec(pcur)) == space);
|
||||
|
||||
#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG
|
||||
if (ibuf_debug == 2) {
|
||||
/* Inject a fault (crash). We do this before trying
|
||||
optimistic delete, because a pessimistic delete in the
|
||||
change buffer would require a larger test case. */
|
||||
|
||||
/* Flag the buffered record as processed, to avoid
|
||||
an assertion failure after crash recovery. */
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
btr_pcur_get_rec(pcur), NULL, TRUE, mtr);
|
||||
mtr_commit(mtr);
|
||||
log_make_checkpoint_at(IB_ULONGLONG_MAX, TRUE);
|
||||
DBUG_SUICIDE();
|
||||
}
|
||||
#endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */
|
||||
|
||||
success = btr_cur_optimistic_delete(btr_pcur_get_btr_cur(pcur), mtr);
|
||||
|
||||
if (success) {
|
||||
|
@ -3145,7 +3162,13 @@ ibuf_delete_rec(
|
|||
ut_ad(ibuf_rec_get_page_no(btr_pcur_get_rec(pcur)) == page_no);
|
||||
ut_ad(ibuf_rec_get_space(btr_pcur_get_rec(pcur)) == space);
|
||||
|
||||
/* We have to resort to a pessimistic delete from ibuf */
|
||||
/* We have to resort to a pessimistic delete from ibuf.
|
||||
Delete-mark the record so that it will not be applied again,
|
||||
in case the server crashes before the pessimistic delete is
|
||||
made persistent. */
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
btr_pcur_get_rec(pcur), NULL, TRUE, mtr);
|
||||
|
||||
btr_pcur_store_position(pcur, mtr);
|
||||
|
||||
btr_pcur_commit_specify_mtr(pcur, mtr);
|
||||
|
@ -3454,7 +3477,7 @@ loop:
|
|||
fputs("InnoDB: Discarding record\n ", stderr);
|
||||
rec_print_old(stderr, rec);
|
||||
fputs("\nInnoDB: from the insert buffer!\n\n", stderr);
|
||||
} else if (block) {
|
||||
} else if (block && !rec_get_deleted_flag(rec, 0)) {
|
||||
/* Now we have at pcur a record which should be
|
||||
inserted to the index page; NOTE that the call below
|
||||
copies pointers to fields in rec, and we must
|
||||
|
|
|
@ -357,19 +357,20 @@ btr_cur_del_mark_set_sec_rec(
|
|||
ibool val, /*!< in: value to set */
|
||||
que_thr_t* thr, /*!< in: query thread */
|
||||
mtr_t* mtr); /*!< in: mtr */
|
||||
/***********************************************************//**
|
||||
Clear a secondary index record's delete mark. This function is only
|
||||
/***************************************************************
|
||||
Sets a secondary index record delete mark. This function is only
|
||||
used by the insert buffer insert merge mechanism. */
|
||||
UNIV_INTERN
|
||||
void
|
||||
btr_cur_del_unmark_for_ibuf(
|
||||
/*========================*/
|
||||
btr_cur_set_deleted_flag_for_ibuf(
|
||||
/*==============================*/
|
||||
rec_t* rec, /*!< in/out: record to delete unmark */
|
||||
page_zip_des_t* page_zip, /*!< in/out: compressed page
|
||||
corresponding to rec, or NULL
|
||||
when the tablespace is
|
||||
uncompressed */
|
||||
mtr_t* mtr); /*!< in: mtr */
|
||||
ibool val, /*!< in: value to set */
|
||||
mtr_t* mtr); /*!< in/out: mini-transaction */
|
||||
/*************************************************************//**
|
||||
Tries to compress a page of the tree if it seems useful. It is assumed
|
||||
that mtr holds an x-latch on the tree and on the cursor page. To avoid
|
||||
|
|
|
@ -839,6 +839,18 @@ dict_index_get_nth_col_pos(
|
|||
const dict_index_t* index, /*!< in: index */
|
||||
ulint n); /*!< in: column number */
|
||||
/********************************************************************//**
|
||||
Looks for column n in an index.
|
||||
@return position in internal representation of the index;
|
||||
ULINT_UNDEFINED if not contained */
|
||||
UNIV_INTERN
|
||||
ulint
|
||||
dict_index_get_nth_col_or_prefix_pos(
|
||||
/*=================================*/
|
||||
const dict_index_t* index, /*!< in: index */
|
||||
ulint n, /*!< in: column number */
|
||||
ibool inc_prefix); /*!< in: TRUE=consider
|
||||
column prefixes too */
|
||||
/********************************************************************//**
|
||||
Returns TRUE if the index contains a column or a prefix of that column.
|
||||
@return TRUE if contains the column or its prefix */
|
||||
UNIV_INTERN
|
||||
|
|
|
@ -286,10 +286,15 @@ struct dict_index_struct{
|
|||
#endif /* !UNIV_HOTBACKUP */
|
||||
unsigned type:4; /*!< index type (DICT_CLUSTERED, DICT_UNIQUE,
|
||||
DICT_UNIVERSAL, DICT_IBUF) */
|
||||
unsigned trx_id_offset:10;/*!< position of the trx id column
|
||||
#define MAX_KEY_LENGTH_BITS 12
|
||||
unsigned trx_id_offset:MAX_KEY_LENGTH_BITS;
|
||||
/*!< position of the trx id column
|
||||
in a clustered index record, if the fields
|
||||
before it are known to be of a fixed size,
|
||||
0 otherwise */
|
||||
#if (1<<MAX_KEY_LENGTH_BITS) < MAX_KEY_LENGTH
|
||||
# error (1<<MAX_KEY_LENGTH_BITS) < MAX_KEY_LENGTH
|
||||
#endif
|
||||
unsigned n_user_defined_cols:10;
|
||||
/*!< number of columns the user defined to
|
||||
be in the index: in the internal
|
||||
|
|
|
@ -156,9 +156,10 @@ page_zip_validate_low(
|
|||
/*==================*/
|
||||
const page_zip_des_t* page_zip,/*!< in: compressed page */
|
||||
const page_t* page, /*!< in: uncompressed page */
|
||||
const dict_index_t* index, /*!< in: index of the page, if known */
|
||||
ibool sloppy) /*!< in: FALSE=strict,
|
||||
TRUE=ignore the MIN_REC_FLAG */
|
||||
__attribute__((nonnull));
|
||||
__attribute__((nonnull(1,2)));
|
||||
/**********************************************************************//**
|
||||
Check that the compressed and decompressed pages match. */
|
||||
UNIV_INTERN
|
||||
|
@ -166,8 +167,9 @@ ibool
|
|||
page_zip_validate(
|
||||
/*==============*/
|
||||
const page_zip_des_t* page_zip,/*!< in: compressed page */
|
||||
const page_t* page) /*!< in: uncompressed page */
|
||||
__attribute__((nonnull));
|
||||
const page_t* page, /*!< in: uncompressed page */
|
||||
const dict_index_t* index) /*!< in: index of the page, if known */
|
||||
__attribute__((nonnull(1,2)));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
/**********************************************************************//**
|
||||
|
|
|
@ -87,10 +87,6 @@ that index record. */
|
|||
enum undo_exec {
|
||||
UNDO_NODE_FETCH_NEXT = 1, /*!< we should fetch the next
|
||||
undo log record */
|
||||
UNDO_NODE_PREV_VERS, /*!< the roll ptr to previous
|
||||
version of a row is stored in
|
||||
node, and undo should be done
|
||||
based on it */
|
||||
UNDO_NODE_INSERT, /*!< undo a fresh insert of a
|
||||
row to a table */
|
||||
UNDO_NODE_MODIFY /*!< undo a modify operation
|
||||
|
@ -108,9 +104,6 @@ struct undo_node_struct{
|
|||
undo_no_t undo_no;/*!< undo number of the record */
|
||||
ulint rec_type;/*!< undo log record type: TRX_UNDO_INSERT_REC,
|
||||
... */
|
||||
roll_ptr_t new_roll_ptr;
|
||||
/*!< roll ptr to restore to clustered index
|
||||
record */
|
||||
trx_id_t new_trx_id; /*!< trx id to restore to clustered index
|
||||
record */
|
||||
btr_pcur_t pcur; /*!< persistent cursor used in searching the
|
||||
|
|
|
@ -1626,9 +1626,8 @@ recv_recover_page_func(
|
|||
if (fil_page_get_type(page) == FIL_PAGE_INDEX) {
|
||||
page_zip_des_t* page_zip = buf_block_get_page_zip(block);
|
||||
|
||||
if (page_zip) {
|
||||
ut_a(page_zip_validate_low(page_zip, page, FALSE));
|
||||
}
|
||||
ut_a(!page_zip
|
||||
|| page_zip_validate_low(page_zip, page, NULL, FALSE));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
|
|
|
@ -1255,6 +1255,14 @@ os_file_create(
|
|||
DWORD create_flag;
|
||||
DWORD attributes;
|
||||
ibool retry;
|
||||
|
||||
DBUG_EXECUTE_IF(
|
||||
"ib_create_table_fail_disk_full",
|
||||
*success = FALSE;
|
||||
SetLastError(ERROR_DISK_FULL);
|
||||
return((os_file_t) -1);
|
||||
);
|
||||
|
||||
try_again:
|
||||
ut_a(name);
|
||||
|
||||
|
@ -1370,6 +1378,13 @@ try_again:
|
|||
ibool retry;
|
||||
const char* mode_str = NULL;
|
||||
|
||||
DBUG_EXECUTE_IF(
|
||||
"ib_create_table_fail_disk_full",
|
||||
*success = FALSE;
|
||||
errno = ENOSPC;
|
||||
return((os_file_t) -1);
|
||||
);
|
||||
|
||||
try_again:
|
||||
ut_a(name);
|
||||
|
||||
|
|
|
@ -310,7 +310,7 @@ page_cur_search_with_match(
|
|||
#endif /* UNIV_DEBUG */
|
||||
page = buf_block_get_frame(block);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
page_check_dir(page);
|
||||
|
@ -1248,7 +1248,7 @@ page_cur_insert_rec_zip(
|
|||
|
||||
ut_ad(!page_rec_is_supremum(*current_rec));
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
/* 1. Get the size of the physical record in the page */
|
||||
|
@ -1973,7 +1973,7 @@ page_cur_delete_rec(
|
|||
}
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
|
|
@ -625,7 +625,7 @@ page_copy_rec_list_end(
|
|||
Furthermore, btr_compress() may set FIL_PAGE_PREV to
|
||||
FIL_NULL on new_page while leaving it intact on
|
||||
new_page_zip. So, we cannot validate new_page_zip. */
|
||||
ut_a(page_zip_validate_low(page_zip, page, TRUE));
|
||||
ut_a(page_zip_validate_low(page_zip, page, index, TRUE));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
ut_ad(buf_block_get_frame(block) == page);
|
||||
|
@ -945,7 +945,7 @@ page_delete_rec_list_end(
|
|||
ut_ad(size == ULINT_UNDEFINED || size < UNIV_PAGE_SIZE);
|
||||
ut_ad(!page_zip || page_rec_is_comp(rec));
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page));
|
||||
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
if (page_rec_is_infimum(rec)) {
|
||||
|
@ -987,7 +987,7 @@ page_delete_rec_list_end(
|
|||
ULINT_UNDEFINED, &heap);
|
||||
rec = rec_get_next_ptr(rec, TRUE);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
page_cur_delete_rec(&cur, index, offsets, mtr);
|
||||
} while (page_offset(rec) != PAGE_NEW_SUPREMUM);
|
||||
|
@ -1127,7 +1127,8 @@ page_delete_rec_list_start(
|
|||
between btr_attach_half_pages() and insert_page = ...
|
||||
when btr_page_get_split_rec_to_left() holds
|
||||
(direction == FSP_DOWN). */
|
||||
ut_a(!page_zip || page_zip_validate_low(page_zip, page, TRUE));
|
||||
ut_a(!page_zip
|
||||
|| page_zip_validate_low(page_zip, page, index, TRUE));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
|
@ -1198,9 +1199,10 @@ page_move_rec_list_end(
|
|||
= buf_block_get_page_zip(block);
|
||||
ut_a(!new_page_zip == !page_zip);
|
||||
ut_a(!new_page_zip
|
||||
|| page_zip_validate(new_page_zip, new_page));
|
||||
|| page_zip_validate(new_page_zip, new_page, index));
|
||||
ut_a(!page_zip
|
||||
|| page_zip_validate(page_zip, page_align(split_rec)));
|
||||
|| page_zip_validate(page_zip, page_align(split_rec),
|
||||
index));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
|
|
|
@ -1433,7 +1433,7 @@ err_exit:
|
|||
page_zip_get_size(page_zip) - PAGE_DATA);
|
||||
mem_heap_free(heap);
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
if (mtr) {
|
||||
|
@ -3119,6 +3119,7 @@ page_zip_validate_low(
|
|||
/*==================*/
|
||||
const page_zip_des_t* page_zip,/*!< in: compressed page */
|
||||
const page_t* page, /*!< in: uncompressed page */
|
||||
const dict_index_t* index, /*!< in: index of the page, if known */
|
||||
ibool sloppy) /*!< in: FALSE=strict,
|
||||
TRUE=ignore the MIN_REC_FLAG */
|
||||
{
|
||||
|
@ -3206,39 +3207,102 @@ page_zip_validate_low(
|
|||
committed. Let us tolerate that difference when we
|
||||
are performing a sloppy validation. */
|
||||
|
||||
if (sloppy) {
|
||||
byte info_bits_diff;
|
||||
ulint offset
|
||||
= rec_get_next_offs(page + PAGE_NEW_INFIMUM,
|
||||
TRUE);
|
||||
ut_a(offset >= PAGE_NEW_SUPREMUM);
|
||||
offset -= 5 /* REC_NEW_INFO_BITS */;
|
||||
ulint* offsets;
|
||||
mem_heap_t* heap;
|
||||
const rec_t* rec;
|
||||
const rec_t* trec;
|
||||
byte info_bits_diff;
|
||||
ulint offset
|
||||
= rec_get_next_offs(page + PAGE_NEW_INFIMUM, TRUE);
|
||||
ut_a(offset >= PAGE_NEW_SUPREMUM);
|
||||
offset -= 5/*REC_NEW_INFO_BITS*/;
|
||||
|
||||
info_bits_diff = page[offset] ^ temp_page[offset];
|
||||
info_bits_diff = page[offset] ^ temp_page[offset];
|
||||
|
||||
if (info_bits_diff == REC_INFO_MIN_REC_FLAG) {
|
||||
temp_page[offset] = page[offset];
|
||||
if (info_bits_diff == REC_INFO_MIN_REC_FLAG) {
|
||||
temp_page[offset] = page[offset];
|
||||
|
||||
if (!memcmp(page + PAGE_HEADER,
|
||||
temp_page + PAGE_HEADER,
|
||||
UNIV_PAGE_SIZE - PAGE_HEADER
|
||||
- FIL_PAGE_DATA_END)) {
|
||||
if (!memcmp(page + PAGE_HEADER,
|
||||
temp_page + PAGE_HEADER,
|
||||
UNIV_PAGE_SIZE - PAGE_HEADER
|
||||
- FIL_PAGE_DATA_END)) {
|
||||
|
||||
/* Only the minimum record flag
|
||||
differed. Let us ignore it. */
|
||||
page_zip_fail(("page_zip_validate: "
|
||||
"min_rec_flag "
|
||||
"(ignored, "
|
||||
"%lu,%lu,0x%02lx)\n",
|
||||
page_get_space_id(page),
|
||||
page_get_page_no(page),
|
||||
(ulong) page[offset]));
|
||||
goto func_exit;
|
||||
}
|
||||
/* Only the minimum record flag
|
||||
differed. Let us ignore it. */
|
||||
page_zip_fail(("page_zip_validate: "
|
||||
"min_rec_flag "
|
||||
"(%s"
|
||||
"%lu,%lu,0x%02lx)\n",
|
||||
sloppy ? "ignored, " : "",
|
||||
page_get_space_id(page),
|
||||
page_get_page_no(page),
|
||||
(ulong) page[offset]));
|
||||
valid = sloppy;
|
||||
goto func_exit;
|
||||
}
|
||||
}
|
||||
page_zip_fail(("page_zip_validate: content\n"));
|
||||
valid = FALSE;
|
||||
|
||||
/* Compare the pointers in the PAGE_FREE list. */
|
||||
rec = page_header_get_ptr(page, PAGE_FREE);
|
||||
trec = page_header_get_ptr(temp_page, PAGE_FREE);
|
||||
|
||||
while (rec || trec) {
|
||||
if (page_offset(rec) != page_offset(trec)) {
|
||||
page_zip_fail(("page_zip_validate: "
|
||||
"PAGE_FREE list: %u!=%u\n",
|
||||
(unsigned) page_offset(rec),
|
||||
(unsigned) page_offset(trec)));
|
||||
valid = FALSE;
|
||||
goto func_exit;
|
||||
}
|
||||
|
||||
rec = page_rec_get_next_low(rec, TRUE);
|
||||
trec = page_rec_get_next_low(trec, TRUE);
|
||||
}
|
||||
|
||||
/* Compare the records. */
|
||||
heap = NULL;
|
||||
offsets = NULL;
|
||||
rec = page_rec_get_next_low(
|
||||
page + PAGE_NEW_INFIMUM, TRUE);
|
||||
trec = page_rec_get_next_low(
|
||||
temp_page + PAGE_NEW_INFIMUM, TRUE);
|
||||
|
||||
do {
|
||||
if (page_offset(rec) != page_offset(trec)) {
|
||||
page_zip_fail(("page_zip_validate: "
|
||||
"record list: 0x%02x!=0x%02x\n",
|
||||
(unsigned) page_offset(rec),
|
||||
(unsigned) page_offset(trec)));
|
||||
valid = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (index) {
|
||||
/* Compare the data. */
|
||||
offsets = rec_get_offsets(
|
||||
rec, index, offsets,
|
||||
ULINT_UNDEFINED, &heap);
|
||||
|
||||
if (memcmp(rec - rec_offs_extra_size(offsets),
|
||||
trec - rec_offs_extra_size(offsets),
|
||||
rec_offs_size(offsets))) {
|
||||
page_zip_fail(
|
||||
("page_zip_validate: "
|
||||
"record content: 0x%02x",
|
||||
(unsigned) page_offset(rec)));
|
||||
valid = FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
rec = page_rec_get_next_low(rec, TRUE);
|
||||
trec = page_rec_get_next_low(trec, TRUE);
|
||||
} while (rec || trec);
|
||||
|
||||
if (heap) {
|
||||
mem_heap_free(heap);
|
||||
}
|
||||
}
|
||||
|
||||
func_exit:
|
||||
|
@ -3260,9 +3324,10 @@ ibool
|
|||
page_zip_validate(
|
||||
/*==============*/
|
||||
const page_zip_des_t* page_zip,/*!< in: compressed page */
|
||||
const page_t* page) /*!< in: uncompressed page */
|
||||
const page_t* page, /*!< in: uncompressed page */
|
||||
const dict_index_t* index) /*!< in: index of the page, if known */
|
||||
{
|
||||
return(page_zip_validate_low(page_zip, page,
|
||||
return(page_zip_validate_low(page_zip, page, index,
|
||||
recv_recovery_is_on()));
|
||||
}
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
@ -3593,7 +3658,7 @@ page_zip_write_rec(
|
|||
page_zip->m_nonempty = TRUE;
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page_align(rec)));
|
||||
ut_a(page_zip_validate(page_zip, page_align(rec), index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
@ -3640,7 +3705,7 @@ corrupt:
|
|||
}
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, NULL));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
memcpy(page + offset,
|
||||
|
@ -3649,7 +3714,7 @@ corrupt:
|
|||
ptr + 4, BTR_EXTERN_FIELD_REF_SIZE);
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, NULL));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
@ -3716,7 +3781,7 @@ page_zip_write_blob_ptr(
|
|||
memcpy(externs, field, BTR_EXTERN_FIELD_REF_SIZE);
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
if (mtr) {
|
||||
|
@ -3787,7 +3852,7 @@ corrupt:
|
|||
}
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, NULL));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
field = page + offset;
|
||||
|
@ -3808,7 +3873,7 @@ corrupt:
|
|||
memcpy(storage, ptr + 4, REC_NODE_PTR_SIZE);
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, NULL));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
@ -4035,7 +4100,7 @@ page_zip_clear_rec(
|
|||
}
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
@ -4059,7 +4124,7 @@ page_zip_rec_set_deleted(
|
|||
*slot &= ~(PAGE_ZIP_DIR_SLOT_DEL >> 8);
|
||||
}
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page_align(rec)));
|
||||
ut_a(page_zip_validate(page_zip, page_align(rec), NULL));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
@ -4360,14 +4425,14 @@ corrupt:
|
|||
goto corrupt;
|
||||
}
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, NULL));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
|
||||
memcpy(page + offset, ptr, len);
|
||||
memcpy(page_zip->data + offset, ptr, len);
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, NULL));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
}
|
||||
|
||||
|
@ -4442,7 +4507,7 @@ page_zip_reorganize(
|
|||
ut_ad(mtr_memo_contains(mtr, block, MTR_MEMO_PAGE_X_FIX));
|
||||
ut_ad(page_is_comp(page));
|
||||
ut_ad(!dict_index_is_ibuf(index));
|
||||
/* Note that page_zip_validate(page_zip, page) may fail here. */
|
||||
/* Note that page_zip_validate(page_zip, page, index) may fail here. */
|
||||
UNIV_MEM_ASSERT_RW(page, UNIV_PAGE_SIZE);
|
||||
UNIV_MEM_ASSERT_RW(page_zip->data, page_zip_get_size(page_zip));
|
||||
|
||||
|
@ -4529,7 +4594,7 @@ page_zip_copy_recs(
|
|||
FIL_PAGE_PREV or PAGE_LEVEL, causing a temporary min_rec_flag
|
||||
mismatch. A strict page_zip_validate() will be executed later
|
||||
during the B-tree operations. */
|
||||
ut_a(page_zip_validate_low(src_zip, src, TRUE));
|
||||
ut_a(page_zip_validate_low(src_zip, src, index, TRUE));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
ut_a(page_zip_get_size(page_zip) == page_zip_get_size(src_zip));
|
||||
if (UNIV_UNLIKELY(src_zip->n_blobs)) {
|
||||
|
@ -4590,7 +4655,7 @@ page_zip_copy_recs(
|
|||
}
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(page_zip_validate(page_zip, page));
|
||||
ut_a(page_zip_validate(page_zip, page, index));
|
||||
#endif /* UNIV_ZIP_DEBUG */
|
||||
btr_blob_dbg_add(page, index, "page_zip_copy_recs");
|
||||
|
||||
|
|
|
@ -1768,7 +1768,8 @@ Creates a table for MySQL. If the name of the table ends in
|
|||
one of "innodb_monitor", "innodb_lock_monitor", "innodb_tablespace_monitor",
|
||||
"innodb_table_monitor", then this will also start the printing of monitor
|
||||
output by the master thread. If the table name ends in "innodb_mem_validate",
|
||||
InnoDB will try to invoke mem_validate().
|
||||
InnoDB will try to invoke mem_validate(). On failure the transaction will
|
||||
be rolled back and the 'table' object will be freed.
|
||||
@return error code or DB_SUCCESS */
|
||||
UNIV_INTERN
|
||||
int
|
||||
|
@ -1907,6 +1908,8 @@ err_exit:
|
|||
|
||||
row_drop_table_for_mysql(table->name, trx, FALSE);
|
||||
trx_commit_for_mysql(trx);
|
||||
} else {
|
||||
dict_mem_table_free(table);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -3908,6 +3908,11 @@ wait_table_again:
|
|||
}
|
||||
|
||||
rec_loop:
|
||||
if (trx_is_interrupted(trx)) {
|
||||
err = DB_INTERRUPTED;
|
||||
goto normal_return;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------*/
|
||||
/* PHASE 4: Look for matching records in a loop */
|
||||
|
||||
|
@ -4828,12 +4833,16 @@ row_search_autoinc_read_column(
|
|||
|
||||
rec_offs_init(offsets_);
|
||||
|
||||
offsets = rec_get_offsets(rec, index, offsets, ULINT_UNDEFINED, &heap);
|
||||
offsets = rec_get_offsets(rec, index, offsets, col_no + 1, &heap);
|
||||
|
||||
if (rec_offs_nth_sql_null(offsets, col_no)) {
|
||||
/* There is no non-NULL value in the auto-increment column. */
|
||||
value = 0;
|
||||
goto func_exit;
|
||||
}
|
||||
|
||||
data = rec_get_nth_field(rec, offsets, col_no, &len);
|
||||
|
||||
ut_a(len != UNIV_SQL_NULL);
|
||||
|
||||
switch (mtype) {
|
||||
case DATA_INT:
|
||||
ut_a(len <= sizeof value);
|
||||
|
@ -4854,14 +4863,15 @@ row_search_autoinc_read_column(
|
|||
ut_error;
|
||||
}
|
||||
|
||||
if (UNIV_LIKELY_NULL(heap)) {
|
||||
mem_heap_free(heap);
|
||||
}
|
||||
|
||||
if (!unsigned_type && (ib_int64_t) value < 0) {
|
||||
value = 0;
|
||||
}
|
||||
|
||||
func_exit:
|
||||
if (UNIV_LIKELY_NULL(heap)) {
|
||||
mem_heap_free(heap);
|
||||
}
|
||||
|
||||
return(value);
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue